ภาพรวม
HashSet<T>.Add(T item) เพิ่มสมาชิกใหม่ หากซ้ำจะคืน false และไม่เพิ่ม (HashSet ไม่อนุญาตค่าซ้ำ) รองรับ Enumerator และการตรวจสอบ subset
ตัวอย่างที่ 1: เพิ่มข้อมูลใน HashSet สองตัวและเปรียบเทียบ
using System;
using System.Collections.Generic;
public class Demo
{
public static void Main(String[] args)
{
HashSet<string> set1 = new HashSet<string>();
set1.Add("A");
set1.Add("B");
set1.Add("C");
set1.Add("D");
set1.Add("E");
set1.Add("F");
set1.Add("G");
set1.Add("H");
Console.WriteLine("Elements in HashSet1...");
foreach (string res in set1)
{
Console.WriteLine(res);
}
HashSet<string> set2 = new HashSet<string>();
set2.Add("John");
set2.Add("Jacob");
set2.Add("Ryan");
set2.Add("Tom");
set2.Add("Andy");
set2.Add("Tim");
set2.Add("Steve");
set2.Add("Mark");
Console.WriteLine("Elements in HashSet2... (Enumerator iterating through HashSet)");
HashSet<string>.Enumerator demoEnum = set2.GetEnumerator();
while (demoEnum.MoveNext())
{
string res = demoEnum.Current;
Console.WriteLine(res);
}
Console.WriteLine("Is HashSet1 equal to HashSet2? = " + set1.Equals(set2));
}
}
ผลลัพธ์
Elements in HashSet1... A B C D E F G H Elements in HashSet2... (Enumerator iterating through HashSet) John Jacob Ryan Tom Andy Tim Steve Mark Is HashSet1 equal to HashSet2? = False Count of HashSet2 = 8 Count of HashSet2 (updated) = 0
ตัวอย่างที่ 2: ตรวจสอบ Subset ระหว่าง HashSet ตัวเลข
using System;
using System.Collections.Generic;
public class Demo
{
public static void Main(String[] args)
{
HashSet<int> set1 = new HashSet<int>();
set1.Add(100);
set1.Add(200);
Console.WriteLine("Elements in HashSet1...");
foreach (int res in set1)
{
Console.WriteLine(res);
}
HashSet<int> set2 = new HashSet<int>();
set2.Add(100);
set2.Add(200);
Console.WriteLine("Elements in HashSet2...");
foreach (int res in set2)
{
Console.WriteLine(res);
}
Console.WriteLine("Is set1 a subset of set2? " + set1.IsSubsetOf(set2));
}
}
ผลลัพธ์
Elements in HashSet1... 100 200 Elements in HashSet2... 100 200 Is set1 a subset of set2? True
สรุป
- HashSet ไม่อนุญาตค่าซ้ำ
Add()คืน false หากมีอยู่แล้ว - ลำดับไม่ได้รับประกัน (ขึ้นอยู่กับ hash code)
- มีเมธอดเซต:
IsSubsetOf,IsSupersetOf,UnionWith,IntersectWith,ExceptWith - Enumerator วนลูปได้แต่ลำดับไม่แน่นอน