Junior
Šta je rečnik (Dictionary) u C#?
sobes.tech АИ
Одговор од АИ
Dictionary у C# је колекција која чува парове "кључ-вредност", где је сваки кључ јединствен и користи се за брз приступ одговарајућој вредности. Реализује интерфејсе IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable. Основан је на хеш табели.
Главне карактеристике:
- Нередоследан: Поредак елемената у речнику није гарантован и може се мењати приликом додавања/уклањања.
- Перформансе: Операције додавања, уклањања и претраге по кључу имају просечну сложеност O(1) (у идеалном случају, без колизије хеша) и O(n) у најгорем случају.
- Јединственост кључева: Свaki кључ мора бити јединствен у речнику. Покушај додавања елемента са постојећим кључем довешће до изузетка.
Пример употребе:
// Креирање речника
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> | Пара кључ-вредност за брзо претрагу | Не | Да | Да | Не |