เมธอด IsProperSupersetOf(IEnumerable<T> other) ของ HashSet<T> คืนค่า true หาก HashSet ปัจจุบันมีองค์ประกอบ ครบถ้วนของ other และมีเพิ่มเติมอีกอย่างน้อย 1 ตัว (คือ Superset แต่ไม่เท่ากัน)
ตัวอย่างที่ 1: HashSet<int>
using System;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
HashSet<int> set1 = new HashSet<int>();
set1.Add(30);
set1.Add(60);
set1.Add(70);
set1.Add(80);
set1.Add(100);
set1.Add(125);
set1.Add(150);
set1.Add(200);
Console.WriteLine("องค์ประกอบใน HashSet1:");
foreach (int val in set1)
{
Console.WriteLine(val);
}
HashSet<int> set2 = new HashSet<int>();
set2.Add(30);
set2.Add(60);
set2.Add(70);
Console.WriteLine("องค์ประกอบใน HashSet2:");
foreach (int val in set2)
{
Console.WriteLine(val);
}
// set1 มีทุกตัวของ set2 และมีเพิ่ม (80, 100, 125, 150, 200) -> Proper Superset
Console.WriteLine("set1 เป็น Proper Superset ของ set2? " + set1.IsProperSupersetOf(set2));
}
}
ผลลัพธ์
องค์ประกอบใน HashSet1 30 60 70 80 100 125 150 200 องค์ประกอบใน HashSet2 30 60 70 set1 เป็น Proper Superset ของ set2? True
ตัวอย่างที่ 2: HashSet<string>
using System;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
HashSet<string> set1 = new HashSet<string>();
set1.Add("AB");
set1.Add("CD");
set1.Add("EF");
set1.Add("GH");
set1.Add("IJ");
set1.Add("KL");
set1.Add("MN");
set1.Add("OP");
Console.WriteLine("องค์ประกอบใน HashSet1:");
foreach (string val in set1)
{
Console.WriteLine(val);
}
HashSet<string> set2 = new HashSet<string>();
set2.Add("EF");
set2.Add("KL");
Console.WriteLine("องค์ประกอบใน HashSet2:");
foreach (string val in set2)
{
Console.WriteLine(val);
}
// set1 มี EF, KL และมีเพิ่มอีกหลายตัว -> Proper Superset
Console.WriteLine("set1 เป็น Proper Superset ของ set2? " + set1.IsProperSupersetOf(set2));
}
}
ผลลัพธ์
องค์ประกอบใน HashSet1 AB CD EF GH IJ KL MN OP องค์ประกอบใน HashSet2 EF KL set1 เป็น Proper Superset ของ set2? True
ตารางเปรียบเทียบ Subset/Superset
| เมธอด | ความหมาย | ตัวอย่าง A={1,2,3}, B={1,2} |
|---|---|---|
IsSubsetOf | A ⊆ B (A เป็นสับเซตของ B) | False |
IsProperSubsetOf | A ⊂ B (A เป็นโพรเพอร์สับเซต - ต้องไม่เท่ากัน) | False |
IsSupersetOf | A ⊇ B (A เป็นซูเปอร์เซตของ B) | True |
IsProperSupersetOf | A ⊃ B (A เป็นโพรเพอร์ซูเปอร์เซต - ต้องไม่เท่ากัน) | True |
Overlaps | มีสมาชิกร่วมกันอย่างน้อย 1 ตัว | True |
SetEquals | A = B (สมาชิกเหมือนกันทุกตัว) | False |
ข้อสังเกต
- Proper Superset = Superset ที่ ไม่เท่ากัน (ต้องมีสมาชิกมากกว่า)
- หาก set1 = {1,2,3}, set2 = {1,2,3} →
IsProperSupersetOfคืนfalse(เพราะเท่ากัน) - HashSet ให้ประสิทธิภาพ O(1) สำหรับ Contains, Add, Remove เหมาะสำหรับชุดข้อมูลขนาดใหญ่