C#-এ SortedSet<T> ক্লাসের RemoveWhere(Predicate<T> match) মেথড ব্যবহার করে শর্ত (predicate) মেটা সকল উপাদান একসাথে মুছে ফেলা যায়। এটি লিনক (LINQ) Where-এর মতো কাজ করে কিন্তু ইন-প্লেস (in-place) মডিফাই করে। প্রেডিকেট একটি ফাংশন যা bool রিটার্ন করে।
উদাহরণ ১: ১০ দিয়ে ভাগযোগ্য সংখ্যা মুছে ফেলা
using System;
using System.Collections.Generic;
public class Demo {
// প্রেডিকেট: ১০ দিয়ে ভাগযোগ্য কিনা
private static bool IsDivisibleBy10(int i) {
return (i % 10) == 0;
}
public static void Main(String[] args) {
SortedSet<int> set1 = new SortedSet<int>();
set1.Add(200);
set1.Add(215);
set1.Add(310);
set1.Add(500);
set1.Add(600);
Console.WriteLine("SortedSet উপাদান...");
foreach (int i in set1) {
Console.WriteLine(i);
}
Console.WriteLine();
// প্রেডিকেট ম্যাচ করা উপাদানগুলো মুছে ফেলা
set1.RemoveWhere(IsDivisibleBy10);
Console.WriteLine("কিছু উপাদান রিমুভ করার পর SortedSet...");
foreach (int i in set1) {
Console.WriteLine(i);
}
}
}
আউটপুট
SortedSet উপাদান... 200 215 310 500 600 SortedSet কিছু উপাদান রিমুভ করার পর... 215
উদাহরণ ২: নির্দিষ্ট মান (500) মুছে ফেলা
using System;
using System.Collections.Generic;
public class Demo {
// প্রেডিকেট: ৫০০ এর সমান কিনা
private static bool Is500(int i) {
return i == 500;
}
public static void Main(String[] args) {
SortedSet<int> set1 = new SortedSet<int>();
set1.Add(200);
set1.Add(215);
set1.Add(310);
set1.Add(500);
set1.Add(600);
Console.WriteLine("SortedSet উপাদান...");
foreach (int i in set1) {
Console.WriteLine(i);
}
Console.WriteLine();
set1.RemoveWhere(Is500);
Console.WriteLine("একটি উপাদান রিমুভ করার পর SortedSet...");
foreach (int i in set1) {
Console.WriteLine(i);
}
}
}
আউটপুট
SortedSet উপাদান... 200 215 310 500 600 SortedSet একটি উপাদান রিমুভ করার পর... 200 215 310 600
ব্যাখ্যা: RemoveWhere(Predicate<T>) মেথড সেটের সব উপাদান ترাভার্স করে এবং প্রেডিকেট true রিটার্ন করলে সেটি মুছে ফেলে। এটি O(n log n) সময় নেয় (প্রতিটি রিমুভ O(log n))। ল্যাম্বডা এক্সপ্রেশন দিয়ে ইনলাইন প্রেডিকেট লিখা যায়: set.RemoveWhere(x => x % 10 == 0)। SortedSet বাইনারি সার্চ ট্রি (Red-Black Tree) বেসড, তাই সর্টেড অর্ডার বজায় থাকে।