Junior — Middle
Czym różnią się struktury danych Dictionary i HashSet pod względem ich użycia i wewnętrznej budowy?
sobes.tech AI
Odpowiedź od AI
Dictionary i HashSet to struktury danych w C# oparte na tablicach haszujących, ale z różnymi celami i konstrukcjami:
-
Dictionary<TKey, TValue> to kolekcja par klucz-wartość. Umożliwia szybkie odnalezienie wartości po unikalnym kluczu. Wewnętrznie używa haszowania kluczy dla szybkiego dostępu.
-
HashSet<T> to kolekcja unikalnych elementów bez par klucz-wartość. Służy do przechowywania zbioru unikalnych obiektów oraz szybkiego wyszukiwania, dodawania lub usuwania elementów.
Główne różnice:
- Dictionary przechowuje pary, HashSet tylko klucze (elementy).
- Dictionary pozwala na pobranie wartości po kluczu, HashSet sprawdza, czy element istnieje.
Przykład:
var dict = new Dictionary<int, string>();
dict[1] = "jeden";
var set = new HashSet<int>();
set.Add(1);
bool hasKey = dict.ContainsKey(1); // true
bool hasElement = set.Contains(1); // true
W związku z tym, wybierz Dictionary, gdy potrzebujesz powiązać klucz z wartością, a HashSet, gdy ważna jest unikalność i szybkie wyszukiwanie elementów.