C#-এ HashSet<T>.IsSubsetOf() মেথডটি বর্তমান HashSet-টি নির্দিষ্ট কালেকশনের সাবসেট (subset) কিনা তা যাচাই করে। একটি সেট A, সেট B-এর সাবসেট হলে A-র সব এলিমেন্ট B-তে থাকে।
উদাহরণ ১: সাবসেট নয় (Partial overlap)
using System;
using System.Collections.Generic;
public class Demo {
public static void Main(){
HashSet<string> set1 = new HashSet<string>();
set1.Add("EF");
set1.Add("OP");
Console.WriteLine("Elements in HashSet1");
foreach(string val in set1){
Console.WriteLine(val);
}
HashSet<string> set2 = new HashSet<string>();
set2.Add("KL");
set2.Add("MN");
set2.Add("OP");
set2.Add("QR");
Console.WriteLine("Elements in HashSet2");
foreach(string val in set2){
Console.WriteLine(val);
}
Console.WriteLine("Is set1 a subset of set2? " + set1.IsSubsetOf(set2));
}
}
আউটপুট
Elements in HashSet1 EF OP Elements in HashSet2 KL MN OP QR Is set1 a subset of set2? False
উদাহরণ ২: সাবসেট (Proper subset)
using System;
using System.Collections.Generic;
public class Demo {
public static void Main(){
HashSet<string> set1 = new HashSet<string>();
set1.Add("EF");
set1.Add("OP");
Console.WriteLine("Elements in HashSet1");
foreach(string val in set1){
Console.WriteLine(val);
}
HashSet<string> set2 = new HashSet<string>();
set2.Add("EF");
set2.Add("OP");
set2.Add("QR");
Console.WriteLine("Elements in HashSet2");
foreach(string val in set2){
Console.WriteLine(val);
}
Console.WriteLine("Is set1 a subset of set2? " + set1.IsSubsetOf(set2));
}
}
আউটপুট
Elements in HashSet1 EF OP Elements in HashSet2 EF OP QR Is set1 a subset of set2? True
সেট থিওরি সংক্রান্ত অন্যান্য মেথডস
| মেথড | বিবরণ |
|---|---|
IsSubsetOf(other) | বর্তমান সেট `other`-এর সাবসেট কিনা (A ⊆ B) |
IsProperSubsetOf(other) | বর্তমান সেট `other`-এর প্রপার সাবসেট কিনা (A ⊂ B, A ≠ B) |
IsSupersetOf(other) | বর্তমান সেট `other`-এর সুপারসেট কিনা (A ⊇ B) |
IsProperSupersetOf(other) | বর্তমান সেট `other`-এর প্রপার সুপারসেট কিনা (A ⊃ B) |
Overlaps(other) | দুই সেটে কমপক্ষে একটি সাধারণ এলিমেন্ট আছে কিনা |
SetEquals(other) | দুই সেট সমান কিনা (একই এলিমেন্টগুলো) |
মূল পয়েন্টস
IsSubsetOf()O(n) সময়ে কাজ করে (n = বর্তমান সেটের আকার)।- খালি সেট (empty set) যেকোনো সেটের সাবসেট (
trueরিটার্ন করে)। - একটি সেট নিজের সাবসেট (reflexive property)।
- প্যারামিটার হিসেবে যেকোনো
IEnumerable<T>গ্রহণ করে (শুধু HashSet নয়)। - HashSet ডুপ্লিকেট এলিমেন্ট অনুমতি দেয় না, তাই সেট অপারেশন খুব দ্রুত।