SortedSet<T> ক্লাসের Remove(T item) মেথড নির্দিষ্ট উপাদানটি সেট থেকে সরিয়ে দেয়। যদি উপাদানটি সেটে থাকে তবে এটি true রিটার্ন করে, অন্যথায় false। এটি O(log n) অপারেশন।
উদাহরণ ১: স্ট্রিং SortedSet থেকে নির্দিষ্ট আইটেম সরানো
using System;
using System.Collections.Generic;
public class Demo {
public static void Main() {
SortedSet<string> set1 = new SortedSet<string>();
set1.Add("AB");
set1.Add("BC");
set1.Add("CD");
set1.Add("EF");
Console.WriteLine("SortedSet1 উপাদানসমূহ...");
foreach (string res in set1) {
Console.WriteLine(res);
}
SortedSet<string> set2 = new SortedSet<string>();
set2.Add("BC");
set2.Add("CD");
set2.Add("DE");
set2.Add("EF");
set2.Add("AB");
set2.Add("HI");
set2.Add("JK");
Console.WriteLine("\nSortedSet2 উপাদানসমূহ...");
foreach (string res in set2) {
Console.WriteLine(res);
}
Console.WriteLine("SortedSet2-র উপাদান সংখ্যা = " + set2.Count); // ৭
// নির্দিষ্ট আইটেম সরানো
bool removed1 = set2.Remove("HI");
bool removed2 = set2.Remove("JK");
Console.WriteLine("HI সরানো হয়েছে? " + removed1); // True
Console.WriteLine("JK সরানো হয়েছে? " + removed2); // True
Console.WriteLine("SortedSet2-র উপাদান সংখ্যা (আপডেট) = " + set2.Count); // ৫
}
}
আউটপুট
SortedSet1 উপাদানসমূহ... AB BC CD EF SortedSet2 উপাদানসমূহ... AB BC CD DE EF HI JK SortedSet2-র উপাদান সংখ্যা = 7 HI সরানো হয়েছে? True JK সরানো হয়েছে? True SortedSet2-র উপাদান সংখ্যা (আপডেট) = 5
উদাহরণ ২: ইন্টিজার SortedSet থেকে আইটেম সরানো
using System;
using System.Collections.Generic;
public class Demo {
public static void Main() {
SortedSet<int> set1 = new SortedSet<int>();
set1.Add(100);
set1.Add(200);
set1.Add(300);
set1.Add(400);
Console.WriteLine("SortedSet উপাদানসমূহ...");
foreach (int res in set1) {
Console.WriteLine(res);
}
Console.WriteLine("SortedSet-র উপাদান সংখ্যা = " + set1.Count); // ৪
bool removed = set1.Remove(100);
Console.WriteLine("100 সরানো হয়েছে? " + removed); // True
Console.WriteLine("SortedSet-র উপাদান সংখ্যা (আপডেট) = " + set1.Count); // ৩
// অস্তিত্বহীন আইটেম সরানোর চেষ্টা
bool notRemoved = set1.Remove(999);
Console.WriteLine("999 সরানো হয়েছে? " + notRemoved); // False
}
}
আউটপুট
SortedSet উপাদানসমূহ... 100 200 300 400 SortedSet-র উপাদান সংখ্যা = 4 100 সরানো হয়েছে? True SortedSet-র উপাদান সংখ্যা (আপডেট) = 3 999 সরানো হয়েছে? False
Remove() মেথডের আচরণ
- রিটার্ন ভ্যালু:
bool- সফল হলেtrue, উপাদান না থাকলেfalse। - এক্সেপশন: কোনো এক্সেপশন নিক্ষেপ করে না (নন-এক্সিস্টেন্ট আইটেমের জন্য)।
- পারফরম্যান্স: O(log n) - বাইনারি সার্চ ট্রি ট্রাভার্সাল।
- সর্ট অর্ডার: সরানোর পর বাকি উপাদানগুলো সর্টেড অর্ডার বজায় রাখে।
বিকল্প সরানোর পদ্ধতিগুলো
// ১. শর্ত ভিত্তিক সরানো (Predicate)
set.RemoveWhere(x => x.StartsWith("A")); // "A" দিয়ে শুরু হওয়া সব উপাদান
// ২. একটি রেঞ্জ সরানো (সর্টেড সেটে Min/Max ব্যবহার করে)
var toRemove = set.GetViewBetween(lowerBound, upperBound).ToList();
foreach (var item in toRemove) set.Remove(item);
// ৩. সব সরানো
set.Clear();
// ৪. HashSet-এ একই সিনট্যাক্স: set.Remove(item) - O(1) গড়ে
SortedSet.Remove() vs HashSet.Remove()
| দিক | SortedSet<T>.Remove | HashSet<T>.Remove |
|---|---|---|
| সময় জটিলতা | O(log n) | O(1) গড়ে |
| অর্ডার মেইনটেন | হ্যাঁ (সর্টেড) | না (আনঅর্ডার্ড) |
| রেঞ্জ কোয়েরি | হ্যাঁ (GetViewBetween) | না |
| মেমরি ওভারহেড | উচ্চ (ট্রি নোডস) | নিম্ন (বাকেট অ্যারে) |
সুপারিশ: সর্টেড অর্ডার দরকার হলে SortedSet, শুধু ফাস্ট লুকআপ/ইনসারশন/রিমুভাল দরকার হলে HashSet ব্যবহার করুন।