Junior
Mis on sõnastik (Dictionary) C#-s?
sobes.tech AI
Vastus AI-lt
C#-да (Dictionary) — see kogumik, mis salvestab paare "võti-väärtus", kus iga võti on unikaalne ja kasutatakse kiireks juurdepääsuks vastavale väärtusele. Rakendab IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable liideseid. Põhineb hash-tabelil.
Peamised omadused:
- Mittekorrastatus: Sõnastikus olevate elementide järjekord ei ole garanteeritud ja võib muutuda lisamise/kustutamise ajal.
- Tõhusus: Lisamise, kustutamise ja otsingu operatsioonid võtme järgi on keskmiselt O(1) keerukusega (ideaalne olukord, ilma hash-kollisioonideta) ning halvim juhul O(n).
- Võtmete unikaalsus: Iga võti peab olema sõnastikus unikaalne. Katse lisada element juba olemasoleva võtmega põhjustab erandi.
Kasutusnäide:
// Sõnastiku loomine
Dictionary<string, int> students = new Dictionary<string, int>();
// Elementide lisamine
students.Add("Ivanov", 5);
students["Petrov"] = 4; // Alternatiivne viis lisamiseks/uuendamiseks
// Kontroll, kas võti on olemas
if (students.ContainsKey("Ivanov"))
{
// Väärtuse saamine võtmisega
int hinne = students["Ivanov"]; // hinne == 5
}
// Elementide läbikäimine
foreach (KeyValuePair<string, int> student in students)
{
// student.Key - võti, student.Value - väärtus
Console.WriteLine($"{student.Key}: {student.Value}");
}
// Elementi eemaldamine
students.Remove("Petrov");
Võrdlus teiste kogumitega:
| Kogum | Peamine eesmärk | Juurdepääs indeksiga | Juurdepääs võtmega | Võtmete unikaalsus | Järjepidevus |
|---|---|---|---|---|---|
| List<T> | Elementide järjepidevus | Jah | Ei | Ei | Jah |
| HashSet<T> | Unikaalsete elementide kogum | Ei | Ei | Jah | Ei |
| Dictionary<TKey, TValue> | Kiire otsing võtme- ja väärtuspaariga | Ei | Jah | Jah | Ei |