Junior
Kas yra žodynas (Dictionary) C#?
sobes.tech AI
Atsakymas iš AI
C#-да (Dictionary) — tai kolekcija, kuri saugo poras "raktas-reikšmė", kur kiekvienas raktas yra unikalus ir naudojamas greitam prieigai prie atitinkamos reikšmės. Ji įgyvendina IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable sąsajas. Pagrįsta ant maišos lentelės.
Pagrindinės savybės:
- Nesutvarkytumas: Elementų tvarka žodyne nėra garantuota ir gali keistis pridėjimo/pašalinimo metu.
- Našumas: Pridėjimo, pašalinimo ir paieškos operacijos pagal raktą turi vidutinį sudėtingumą O(1) (idealiu atveju, be maišos kolizijų) ir O(n) blogiausiu atveju.
- Raktų unikalumas: Kiekvienas raktas turi būti unikalus žodyne. Bandymas pridėti elementą su esamu raktu sukels išimtį.
Naudojimo pavyzdys:
// Žodyno kūrimas
Dictionary<string, int> students = new Dictionary<string, int>();
// Elementų pridėjimas
students.Add("Ivanov", 5);
students["Petrov"] = 4; // Alternatyvus būdas pridėti/atnaujinti
// Patikrinti, ar yra raktas
if (students.ContainsKey("Ivanov"))
{
// Gauti reikšmę pagal raktą
int pažymys = students["Ivanov"]; // pažymys == 5
}
// Elementų iteracija
foreach (KeyValuePair<string, int> student in students)
{
// student.Key - raktas, student.Value - reikšmė
Console.WriteLine($"{student.Key}: {student.Value}");
}
// Elemento pašalinimas
students.Remove("Petrov");
Palyginimas su kitomis kolekcijomis:
| Kolekcija | Pagrindinis tikslas | Prieiga per indeksą | Prieiga per raktą | Raktų unikalumas | Tvarkinga |
|---|---|---|---|---|---|
| List<T> | Elementų seka | Taip | Ne | Ne | Taip |
| HashSet<T> | Unikalus elementų rinkinys | Ne | Ne | Taip | Ne |
| Dictionary<TKey, TValue> | Greita paieška naudojant raktą-vertę | Ne | Taip | Taip | Ne |