Sobes.tech
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> Пара кључ-вредност за брзо претрагу Не Да Да Не