C#-এ HashSet<T> ক্লাসের RemoveWhere(Predicate<T> match) মেথড ব্যবহার করে শর্ত (predicate) মেটা সকল উপাদান একসাথে মুছে ফেলা যায়। HashSet হ্যাশ টেবিল বেসড, তাই ফিল্টারিং খুব দ্রুত হয়। প্রেডিকেট একটি Func<T, bool> বা মেথড গ্রুপ।
উদাহরণ ১: নির্দিষ্ট মান (100) মুছে ফেলা
using System;
using System.Collections.Generic;
public class Demo {
// প্রেডিকেট: ১০০ এর সমান কিনা
private static bool Is100(int i) {
return i == 100;
}
public static void Main(String[] args) {
HashSet<int> list = new HashSet<int>();
list.Add(100);
list.Add(300);
list.Add(400);
list.Add(500);
list.Add(600);
Console.WriteLine("HashSet উপাদান...");
foreach (int i in list) {
Console.WriteLine(i);
}
Console.WriteLine();
// প্রেডিকেট ম্যাচ করা উপাদান মুছে ফেলা
list.RemoveWhere(Is100);
Console.WriteLine("এলিমেন্ট ১০০ রিমুভ করার পর HashSet...");
foreach (int i in list) {
Console.WriteLine(i);
}
}
}
আউটপুট
HashSet উপাদান... 100 300 400 500 600 HashSet এলিমেন্ট ১০০ রিমুভ করার পর... 300 400 500 600
উদাহরণ ২: ১০ দিয়ে ভাগযোগ্য সংখ্যা মুছে ফেলা
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) {
HashSet<int> list = new HashSet<int>();
list.Add(100);
list.Add(355);
list.Add(400);
list.Add(555);
list.Add(600);
Console.WriteLine("HashSet উপাদান...");
foreach (int i in list) {
Console.WriteLine(i);
}
Console.WriteLine();
list.RemoveWhere(IsDivisibleBy10);
Console.WriteLine("কিছু উপাদান রিমুভ করার পর HashSet...");
foreach (int i in list) {
Console.WriteLine(i);
}
}
}
আউটপুট
HashSet উপাদান... 100 355 400 555 600 HashSet কিছু উপাদান রিমুভ করার পর... 355 555
ব্যাখ্যা: RemoveWhere(Predicate<T>) মেথড সেটের সব উপাদান চেক করে এবং প্রেডিকেট সত্য হলে মুছে ফেলে। HashSet-এ এটি O(n) গড় সময় নেয় (প্রতিটি রিমুভ O(1) গড়)। ল্যাম্বডা এক্সপ্রেশন ব্যবহার করে সংক্ষিপ্ত লিখা যায়: set.RemoveWhere(x => x % 10 == 0)। HashSet ডুপ্লিকেট অনুমতি দেয় না এবং অর্ডার গ্যারান্টি দেয় না। সেট অপারেশন (Union, Intersect, Except, SymmetricExcept) বিল্ট-ইন সাপোর্টেড।