HashSet<T>
Zestaw HashSet reprezentuje zestaw unikalnych elementów, podobnie jak zestaw matematyczny (np. { 1, 2, 3, 4, 5 }). Zestaw nie może zawierać duplikatów, a kolejność elementów nie ma znaczenia. Tak więc { 1, 2, 3, 4, 5 } i { 5, 4, 3, 2, 1 } są równe.
Użyj zestawu HashSet, gdy potrzebujesz super szybkich wyszukiwań na unikalnej liście elementów. Na przykład możesz przetwarzać listę zamówień i dla każdego zamówienia musisz szybko sprawdzić kod dostawcy z listy prawidłowych kodów dostawcy.
HashSet jest podobny do Dictionary, to zbiór oparty na haszowaniu, więc wyszukiwanie jest bardzo szybkie. Ale w przeciwieństwie do słownika nie przechowuje par klucz / wartość; przechowuje tylko wartości. Tak więc każdy obiekt powinien być unikalny, a to zależy od wartości zwróconej z metody GetHashCode.
Jeśli więc zamierzasz przechowywać niestandardowe typy w zestawie, musisz zastąpić metody GetHashCode i Equals w swoim typie.
Aby utworzyć zestaw HashSet:
var hashSet = new HashSet<int>();
Możesz dodawać / usuwać obiekty do HashSet podobnie jak do listy:
// Zainicjuj zestaw przy użyciu składni inicjalizacji obiektu
var hashSet = new HashSet<int>() { 1, 2, 3, 4, 5 };
// Dodaj obiekt
hashSet.Add(6);
// Usuń obiekt
hashSet.Remove(4);
// Usuń wszystkie obiekty
hashSet.Clear();
// Sprawdź, czy zestaw zawiera obiekt
var contains = hashSet.Contains(3);
// Zwruć liczbę obiektów w zestawie
var count = hashSet.Count;
HashSet zapewnia wiele operacji na zestawach matematycznych:
// Zmodyfikuj zestaw, tak aby zawierał tylko obiekty obecne w 1 zestawie i 2 zestawie
hashSet.IntersectWith(another);
// Usuń wszystkie obiekty w innym „another" zestawie z „hashSet”
hashSet.ExceptWith(another);
// Zmodyfikuj zestaw, aby uwzględnić wszystkie obiekty zawarte w nim samym, w „innym” zestawie lub w obu
hashSet.UnionWith(another);
var isSupersetOf = hashSet.IsSupersetOf(another);
var isSubsetOf = hashSet.IsSubsetOf(another);
var equals = hashSet.SetEquals(another);
Masz dar do motywowania innych do nauki i eksperymentowania. Świetne