Sobes.tech
Junior

C# да сөздүк (Dictionary) эмне?

sobes.tech AI

AIден жооп

C#-да (Dictionary) — бул коллекция, алда " ачкыч-бага" парларын сактайт, анда ар бир ачкыч уникалдуу жана тиешелүү баага тез жетүү үчүн колдонулат. IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable интерфейстерин ишке ашырат. Хеш-таблицага негизделген.

Негизги өзгөчөлүктөрү:

  • Тәртипсиздик: Сөздүктөгү элементтердин тартиби кепилденбейт жана кошуу/жоюу учурунда өзгөрүшү мүмкүн.
  • Иштөө ылдамдыгы: Кошуу, жоюу жана ачкыч боюнча издөө операциялары орточо эсеп менен O(1) күрделүүлүккө ээ (идеалдуу шартта, хеш-коллизияларсыз) жана эң жаман учурда O(n).
  • Ачкычтардын уникалдуулугу: Ар бир ачкыч сөздүктө уникалдуу болушу керек. Бар ачкыч менен элемент кошуу катага алып келет.

Колдонуу мисалы:

// Сөздүк түзүү
Dictionary<string, int> students = new Dictionary<string, int>();

// Элементтерди кошуу
students.Add("Ivanov", 5);
students["Petrov"] = 4; // Альтернативдүү кошуу/жаңылоо ыкмасы

// Ачкычтын бар-жогун текшерүү
if (students.ContainsKey("Ivanov"))
{
    // Ачкыч боюнча маанини алуу
    int баа = students["Ivanov"]; // баа == 5
}

// Элементтерди кайталоо
foreach (KeyValuePair<string, int> student in students)
{
    // student.Key — ачкыч, student.Value — мааниси
    Console.WriteLine($"{student.Key}: {student.Value}");
}

// Элементти жоюу
students.Remove("Petrov");

Башка коллекциялар менен салыштыруу:

Коллекция Негизги максаты Индекс боюнча жетүү Ачкыч боюнча жетүү Ачкычтардын уникалдуулугу Тартиптүүлүк
List<T> Элементтердин реттілиги Ооба Жок Жок Ооба
HashSet<T> Уникалдуу элементтер жыйындысы Жок Жок Ооба Жок
Dictionary<TKey, TValue> Жылдам издөө үчүн ачкыч-бага жуптары Жок Ооба Ооба Жок