কম্পিউটার টিউটোরিয়াল

C#-এ SortedSet ক্লাস

SortedSet<T> ক্লাস একটি সর্টেড, ডুপ্লিকেট-ফ্রি কালেকশন। এটি বাইনারি সার্চ ট্রি (লাল-কালো ট্রি) ব্যবহার করে, তাই ইনসার্ট, ডিলিট, লুকআপ O(log n)।

SortedSet-এর প্রপার্টিগুলো

ক্রমপ্রপার্টি ও বর্ণনা
1Comparer — সর্টিংয়ের জন্য IComparer<T> অবজেক্ট।
2Count — এলিমেন্ট সংখ্যা।
3Max — সর্বোচ্চ মান (কম্পারার অনুযায়ী)।
4Min — সর্বনিম্ন মান (কম্পারার অনুযায়ী)।

SortedSet-এর কিছু মেথড

ক্রমমেথড ও বর্ণনা
1Add(T) — এলিমেন্ট যোগ করে (সফল হলে true)।
2Clear() — সব এলিমেন্ট মুছে ফেলে।
3Contains(T) — এলিমেন্ট আছে কিনা।
4CopyTo(T[]) — অ্যারেতে কপি করে।
5CopyTo(T[], Int32) — নির্দিষ্ট ইনডেক্স থেকে কপি।
6CopyTo(T[], Int32, Int32) — নির্দিষ্ট সংখ্যক এলিমেন্ট কপি।
7CreateSetComparer() — সেট কম্পারার রিটার্ন করে।
8GetEnumerator() — সর্টেড অর্ডারে ইটারেটর।
9Remove(T) — এলিমেন্ট মুছে ফেলে।
10UnionWith, 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 ছাড়া)।
  • ডুপ্লিকেট অ্যালাও করে না।
  • সেট অপারেশন (ইউনিয়ন, ইন্টারসেকশন ইত্যাদি) বিল্ট-ইন।
  1. C# Console ক্লাস

  2. C#-এ SortedList ক্লাসের IsFixedSize প্রোপার্টি কী?

  3. C#-এ সিঙ্গলটন প্যাটার্ন ইমপ্লিমেন্টেশন

  4. C#-এ SortedList ক্লাস (SortedList Class)