Junior
Какво е речник (Dictionary) в C#?
sobes.tech AI
Отговор от AI
Дефиницията на Dictionary в C# е колекция, която съхранява двойки "ключ-стойност", където всеки ключ е уникален и се използва за бърз достъп до съответната стойност. Реализира интерфейсите IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable. Основава се на хеш таблица.
Основни характеристики:
- Ненаредена: Поредността на елементите в речника не е гарантирана и може да се променя при добавяне/премахване.
- Производителност: Операциите добавяне, премахване и търсене по ключ имат средна сложност O(1) (в идеалния случай, без колизии на хешове) и O(n) в най-лошия случай.
- Уникалност на ключовете: Всеки ключ трябва да е уникален в речника. Опитът за добавяне на елемент с съществуващ ключ ще доведе до изключение.
Пример за използване:
// Създаване на речник
Dictionary<string, int> ученици = new Dictionary<string, int>();
// Добавяне на елементи
ученици.Add("Ivanov", 5);
ученици["Petrov"] = 4; // Алтернативен начин за добавяне/актуализиране
// Проверка дали ключ съществува
if (ученици.ContainsKey("Ivanov"))
{
// Получаване на стойността по ключ
int оценка = ученици["Ivanov"]; // оценка == 5
}
// Обхождане на елементите
foreach (KeyValuePair<string, int> ученик in ученици)
{
// ученик.Key - ключ, ученик.Value - стойност
Console.WriteLine($"{ученик.Key}: {ученик.Value}");
}
// Премахване на елемент
ученици.Remove("Petrov");
Сравнение с други колекции:
| Колекция | Основна цел | Достъп чрез индекс | Достъп чрез ключ | Уникалност на ключовете | Подредба |
|---|---|---|---|---|---|
| List<T> | Последователност от елементи | Да | Не | Не | Да |
| HashSet<T> | Уникален набор от елементи | Не | Не | Да | Не |
| Dictionary<TKey, TValue> | Пара от ключ-стойност за бързо търсене | Не | Да | Да | Не |