Sobes.tech
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