ภาพรวม
เมธอด HashSet<T>.IntersectWith(IEnumerable<T>) แปลง HashSet ให้เหลือเฉพาะสมาชิกที่ปรากฏใน ทั้งสองชุด (ส่วนร่วม) ทำงานแบบ in-place
ตัวอย่าง 1: HashSet สตริง
using System;
using System.Collections.Generic;
public class Demo {
public static void Main() {
HashSet set1 = new HashSet();
set1.Add("AB");
set1.Add("CD");
set1.Add("EF");
set1.Add("AB");
set1.Add("IJ");
set1.Add("KL");
set1.Add("EF");
set1.Add("OP");
Console.WriteLine("Elements in HashSet1");
foreach (string val in set1) {
Console.WriteLine(val);
}
HashSet set2 = new HashSet();
set2.Add("EF");
set2.Add("KL");
Console.WriteLine("\nElements in HashSet2");
foreach (string val in set2) {
Console.WriteLine(val);
}
Console.WriteLine("Count of elements in HashSet2 = " + set2.Count);
set2.Remove("KL");
Console.WriteLine("\nElements in HashSet2... (UPDATED)");
foreach (string res in set2) {
Console.WriteLine(res);
}
Console.WriteLine("Count of elements in HashSet2 (Updated) = " + set2.Count);
Console.WriteLine("\nIs set1 a superset of set2? " + set1.IsSupersetOf(set2));
set1.IntersectWith(set2);
Console.WriteLine("\nIntersection result...");
foreach (string str in set1) {
Console.WriteLine(str);
}
}
}
ผลลัพธ์ตัวอย่าง 1
Elements in HashSet1 AB CD EF IJ KL OP Elements in HashSet2 EF KL Count of elements in HashSet2 = 2 Elements in HashSet2... (UPDATED) EF Count of elements in HashSet2 (Updated) = 1 Is set1 a superset of set2? True Intersection result... EF
ตัวอย่าง 2: HashSet int ที่เหมือนกันทั้งคู่
using System;
using System.Collections.Generic;
public class Demo {
public static void Main() {
HashSet set1 = new HashSet();
set1.Add(30);
set1.Add(60);
set1.Add(70);
set1.Add(80);
set1.Add(100);
set1.Add(125);
Console.WriteLine("Elements in HashSet1");
foreach (int val in set1) {
Console.WriteLine(val);
}
HashSet set2 = new HashSet();
set2.Add(30);
set2.Add(60);
set2.Add(70);
set2.Add(80);
set2.Add(100);
set2.Add(125);
Console.WriteLine("\nElements in HashSet2");
foreach (int val in set2) {
Console.WriteLine(val);
}
set1.IntersectWith(set2);
Console.WriteLine("\nIntersection result...");
foreach (int val in set1) {
Console.WriteLine(val);
}
}
}
ผลลัพธ์ตัวอย่าง 2
Elements in HashSet1 30 60 70 80 100 125 Elements in HashSet2 30 60 70 80 100 125 Intersection result... 30 60 70 80 100 125
สรุป
IntersectWithแปลงเซตต้นทางให้เป็นส่วนร่วม- ใช้
IsSupersetOfตรวจสอบก่อน intersect ได้ - ประสิทธิภาพดี O(n) สำหรับ HashSet