Giới thiệu
Phương thức SetEquals(IEnumerable<T>) của HashSet<T> kiểm tra xem hai tập hợp có chứa chính xác cùng các phần tử hay không (bỏ qua thứ tự và trùng lặp). Trả về true nếu bằng nhau.
Ví dụ 1: Hai HashSet khác nhau
using System;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
HashSet<string> set1 = new HashSet<string>();
set1.Add("One");
set1.Add("Two");
set1.Add("Three");
set1.Add("Four");
set1.Add("Five");
set1.Add("Six");
set1.Add("Seven");
HashSet<string> set2 = new HashSet<string>();
set2.Add("One");
set2.Add("Two");
set2.Add("Three");
set2.Add("Four");
Console.WriteLine("Does it contain the same elements? = " + set1.SetEquals(set2));
}
}
Kết quả
Does it contain the same elements? = False
Ví dụ 2: Hai HashSet giống nhau
using System;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
HashSet<int> set1 = new HashSet<int>();
set1.Add(100);
set1.Add(200);
set1.Add(300);
set1.Add(400);
set1.Add(500);
set1.Add(600);
HashSet<int> set2 = new HashSet<int>();
set2.Add(100);
set2.Add(200);
set2.Add(300);
set2.Add(400);
set2.Add(500);
set2.Add(600);
Console.WriteLine("Does it contain the same elements? = " + set1.SetEquals(set2));
}
}
Kết quả
Does it contain the same elements? = True
Đặc điểm SetEquals()
- So sánh tập hợp (set equality): cùng phần tử, bỏ qua thứ tự và số lần xuất hiện
- Phức tạp: O(n) - duyệt tập hợp nhỏ hơn
- Chấp nhận bất kỳ
IEnumerable<T> - Không thay đổi tập hợp gốc
So sánh các phương thức so sánh tập hợp
| Phương thức | Ý nghĩa | Ví dụ A={1,2,3}, B={2,3,4} |
|---|---|---|
| SetEquals | A = B (cùng phần tử) | False |
| Overlaps | A ∩ B ≠ ∅ | True |
| IsSubsetOf | A ⊆ B | False |
| IsSupersetOf | A ⊇ B | False |
| IsProperSubsetOf | A ⊂ B | False |
| IsProperSupersetOf | A ⊃ B | False |