SortedSet<T> ক্লাস একটি সর্টেড, ডুপ্লিকেট-ফ্রি কালেকশন। এটি বাইনারি সার্চ ট্রি (লাল-কালো ট্রি) ব্যবহার করে, তাই ইনসার্ট, ডিলিট, লুকআপ O(log n)।
SortedSet-এর প্রপার্টিগুলো
| ক্রম | প্রপার্টি ও বর্ণনা |
| 1 | Comparer — সর্টিংয়ের জন্য IComparer<T> অবজেক্ট। |
| 2 | Count — এলিমেন্ট সংখ্যা। |
| 3 | Max — সর্বোচ্চ মান (কম্পারার অনুযায়ী)। |
| 4 | Min — সর্বনিম্ন মান (কম্পারার অনুযায়ী)। |
SortedSet-এর কিছু মেথড
| ক্রম | মেথড ও বর্ণনা |
| 1 | Add(T) — এলিমেন্ট যোগ করে (সফল হলে true)। |
| 2 | Clear() — সব এলিমেন্ট মুছে ফেলে। |
| 3 | Contains(T) — এলিমেন্ট আছে কিনা। |
| 4 | CopyTo(T[]) — অ্যারেতে কপি করে। |
| 5 | CopyTo(T[], Int32) — নির্দিষ্ট ইনডেক্স থেকে কপি। |
| 6 | CopyTo(T[], Int32, Int32) — নির্দিষ্ট সংখ্যক এলিমেন্ট কপি। |
| 7 | CreateSetComparer() — সেট কম্পারার রিটার্ন করে। |
| 8 | GetEnumerator() — সর্টেড অর্ডারে ইটারেটর। |
| 9 | Remove(T) — এলিমেন্ট মুছে ফেলে। |
| 10 | UnionWith, IntersectWith, ExceptWith, SymmetricExceptWith — সেট অপারেশন। |
উদাহরণ ১: Contains ও IsSupersetOf
using System;
using System.Collections.Generic;
public class Demo {
public static void Main() {
SortedSet<string> set1 = new SortedSet<string>();
set1.Add("CD");
set1.Add("CD"); // ডুপ্লিকেট ইগনোর
set1.Add("CD");
set1.Add("CD");
Console.WriteLine("Elements in SortedSet1...");
foreach (string res in set1) {
Console.WriteLine(res);
}
Console.WriteLine("Does the SortedSet1 contains the element DE? = " + set1.Contains("DE"));
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("Elements in SortedSet2...");
foreach (string res in set2) {
Console.WriteLine(res);
}
Console.WriteLine("SortedSet2 is a superset of SortedSet1? = " + set2.IsSupersetOf(set1));
}
}
আউটপুট
Elements in SortedSet1...
CD
Does the SortedSet1 contains the element DE? = False
Elements in SortedSet2...
AB
BC
CD
DE
EF
HI
JK
SortedSet2 is a superset of SortedSet1? = True
উদাহরণ ২: ইটারেটর ব্যবহার
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("Elements in 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("Elements in SortedSet2 (Enumerator for SortedSet)...");
SortedSet<string>.Enumerator demoEnum = set2.GetEnumerator();
while (demoEnum.MoveNext()) {
string res = demoEnum.Current;
Console.WriteLine(res);
}
}
}
আউটপুট
Elements in SortedSet1...
AB
BC
CD
EF
Elements in SortedSet2 (Enumerator for SortedSet)...
AB
BC
CD
DE
EF
HI
JK
মূল সুবিধা
- সর্টেড অর্ডার মেইনটেইন করে (লিনക്യোয়ারির
OrderBy ছাড়া)।
- ডুপ্লিকেট অ্যালাও করে না।
- সেট অপারেশন (ইউনিয়ন, ইন্টারসেকশন ইত্যাদি) বিল্ট-ইন।