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

C#-তে SortedSet থেকে নির্দিষ্ট আইটেম সরাতে Remove() মেথড ব্যবহার

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>.RemoveHashSet<T>.Remove
সময় জটিলতাO(log n)O(1) গড়ে
অর্ডার মেইনটেনহ্যাঁ (সর্টেড)না (আনঅর্ডার্ড)
রেঞ্জ কোয়েরিহ্যাঁ (GetViewBetween)না
মেমরি ওভারহেডউচ্চ (ট্রি নোডস)নিম্ন (বাকেট অ্যারে)

সুপারিশ: সর্টেড অর্ডার দরকার হলে SortedSet, শুধু ফাস্ট লুকআপ/ইনসারশন/রিমুভাল দরকার হলে HashSet ব্যবহার করুন।

  1. C# তে Hashtable থেকে একটি আইটেম সরানো

  2. C#-এ HashSet থেকে আইটেম সরানো (RemoveWhere)

  3. C#-এ ArrayList-এ서 আইটেম সরানো (Remove মেথড)

  4. C#-তে লিস্ট থেকে ইন্ডেক্স দিয়ে আইটেম রিমুভ করা