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 |