Sobes.tech
Junior

Čo je slovník (Dictionary) v C#?

sobes.tech AI

Odpoveď od AI

Slovník (Dictionary) v jazyku C# je zbierka, ktorá uchováva páry "kľúč-hodnota", kde je každý kľúč jedinečný a slúži na rýchly prístup k príslušnej hodnote. Implementuje rozhrania IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable. Je založený na hash tabuľke.

Hlavné vlastnosti:

  • Neusporiadanosť: Poradie prvkov v slovníku nie je garantované a môže sa meniť pri pridávaní/odstraňovaní.
  • Výkon: Operácie pridávania, odstraňovania a vyhľadávania podľa kľúča majú priemernú zložitosť O(1) (v ideálnom prípade, bez kolízií hashov) a O(n) v najhoršom prípade.
  • Unikátnosť kľúčov: Každý kľúč musí byť v slovníku jedinečný. Pokus o pridanie prvku s existujúcim kľúčom spôsobí výnimku.

Príklad použitia:

// Vytvorenie slovníka
Dictionary<string, int> students = new Dictionary<string, int>();

// Pridanie prvkov
students.Add("Ivanov", 5);
students["Petrov"] = 4; // Alternatívny spôsob pridania/aktualizácie

// Kontrola prítomnosti kľúča
if (students.ContainsKey("Ivanov"))
{
    // Získanie hodnoty podľa kľúča
    int znamka = students["Ivanov"]; // znamka == 5
}

// Prechádzanie prvkov
foreach (KeyValuePair<string, int> student in students)
{
    // student.Key - kľúč, student.Value - hodnota
    Console.WriteLine($"{student.Key}: {student.Value}");
}

// Odstránenie prvku
students.Remove("Petrov");

Porovnanie s inými zbierkami:

Zbierka Hlavný účel Prístup podľa indexu Prístup podľa kľúča Unikátnosť kľúčov Usporiadanie
List<T> Sekvencia prvkov Áno Nie Nie Áno
HashSet<T> Unikátna množina prvkov Nie Nie Áno Nie
Dictionary<TKey, TValue> Páry kľúč-hodnota pre rýchle vyhľadávanie Nie Áno Áno Nie