Junior
Co je to slovník (Dictionary) v C#?
sobes.tech AI
Odpověď od AI
Dictionary v C# je kolekce, která ukládá páry "klíč-hodnota", kde je každý klíč jedinečný a slouží k rychlému přístupu k odpovídající hodnotě. Implementuje rozhraní IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable. Je založen na hash tabulce.
Hlavní vlastnosti:
- Nepořadí: Pořadí prvků v slovníku není garantováno a může se měnit při přidávání/odstraňování.
- Výkon: Operace přidání, odstranění a hledání podle klíče mají průměrnou složitost O(1) (v ideálním případě, bez kolizí hashování) a v nejhorším případě O(n).
- Unikátnost klíčů: Každý klíč musí být v slovníku unikátní. Pokus o přidání prvku s existujícím klíčem povede k výjimce.
Příklad použití:
// Vytvoření slovníku
Dictionary<string, int> studenti = new Dictionary<string, int>();
// Přidání prvků
studenti.Add("Ivanov", 5);
studenti["Petrov"] = 4; // Alternativní způsob přidání/aktualizace
// Kontrola existence klíče
if (studenti.ContainsKey("Ivanov"))
{
// Získání hodnoty podle klíče
int známka = studenti["Ivanov"]; // známka == 5
}
// Procházení prvků
foreach (KeyValuePair<string, int> student in studenti)
{
// student.Key - klíč, student.Value - hodnota
Console.WriteLine($"{student.Key}: {student.Value}");
}
// Odstranění prvku
studenti.Remove("Petrov");
Porovnání s jinými kolekcemi:
| Kolekce | Hlavní účel | Přístup přes index | Přístup přes klíč | Unikátnost klíčů | Seřazení |
|---|---|---|---|---|---|
| List<T> | Sekvence prvků | Ano | Ne | Ne | Ano |
| HashSet<T> | Unikální množina prvků | Ne | Ne | Ano | Ne |
| Dictionary<TKey, TValue> | Páry klíč-hodnota pro rychlé hledání | Ne | Ano | Ano | Ne |