Sobes.tech
Junior

Czym jest słownik (Dictionary) w C#?

sobes.tech AI

Odpowiedź od AI

Słownik (Dictionary) w C# to kolekcja przechowująca pary "klucz-wartość", gdzie każdy klucz jest unikalny i służy do szybkiego dostępu do odpowiadającej mu wartości. Implementuje interfejsy IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable. Opiera się na tablicy haszującej.

Główne cechy:

  • Brak uporządkowania: Kolejność elementów w słowniku nie jest gwarantowana i może się zmieniać podczas dodawania/usuwania.
  • Wydajność: Operacje dodawania, usuwania i wyszukiwania po kluczu mają średnią złożoność O(1) (w idealnym przypadku, bez kolizji haszowania) i O(n) w najgorszym przypadku.
  • Unikalność kluczy: Każdy klucz musi być unikalny w słowniku. Próba dodania elementu z istniejącym kluczem spowoduje wyjątek.

Przykład użycia:

// Tworzenie słownika
Dictionary<string, int> uczniowie = new Dictionary<string, int>();

// Dodawanie elementów
uczniowie.Add("Ivanov", 5);
uczniowie["Petrov"] = 4; // Alternatywny sposób dodawania/aktualizacji

// Sprawdzanie, czy klucz istnieje
if (uczniowie.ContainsKey("Ivanov"))
{
    // Pobranie wartości po kluczu
    int ocena = uczniowie["Ivanov"]; // ocena == 5
}

// Iteracja po elementach
foreach (KeyValuePair<string, int> uczeń in uczniowie)
{
    // uczeń.Key - klucz, uczeń.Value - wartość
    Console.WriteLine($"{uczeń.Key}: {uczeń.Value}");
}

// Usuwanie elementu
uczniowie.Remove("Petrov");

Porównanie z innymi kolekcjami:

Kolekcja Główny cel Dostęp przez indeks Dostęp przez klucz Unikalność kluczy Uporządkowanie
List<T> Sekwencja elementów Tak Nie Nie Tak
HashSet<T> Zbiór unikalnych elementów Nie Nie Tak Nie
Dictionary<TKey, TValue> Parowanie klucz-wartość dla szybkiego wyszukiwania Nie Tak Tak Nie