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 |