Хэш-таблица — это структура данных, которая предоставляет быстрый доступ к данным по ключу. В C# хэш-таблицы реализуются с помощью класса Dictionary<TKey, TValue>
из пространства имен System.Collections.Generic
.
Принцип работы хэш-таблицы
Хэш-таблица использует хеш-функцию для преобразования ключа в индекс массива, где хранится соответствующее значение. Это позволяет выполнять операции поиска, вставки и удаления за время, близкое к O(1), но при высоком количестве коллизий (например, при плохой хэш-функции) сложность может возрасти до O(n).
Создание и использование Dictionary<TKey, TValue>
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
Dictionary<int, string> dict = new Dictionary<int, string>();
dict[1] = "Apple";
dict[2] = "Banana";
dict[3] = "Cherry";
Console.WriteLine(dict[2]);
}
}
Основные операции
Добавление элементов
Метод Add
добавляет новую пару ключ-значение:
dict.Add(4, "Date");
Доступ к элементам
Можно получить значение по ключу:
string fruit = dict[1];
Безопасный доступ через TryGetValue
:
if (dict.TryGetValue(5, out string value))
{
Console.WriteLine(value);
}
Удаление элементов
dict.Remove(2);
Проверка наличия ключа
if (dict.ContainsKey(3))
{
Console.WriteLine("Key exists");
}
Перебор элементов
foreach (var kvp in dict)
{
Console.WriteLine($"{kvp.Key}: {kvp.Value}");
}
Различия Dictionary
и Hashtable
Dictionary<TKey, TValue>
типизированный, аHashtable
хранит объекты типаobject
.Dictionary
быстрее, так как не требует упаковки (boxing
) и распаковки (unboxing
).Hashtable
используется редко, предпочтение отдаетсяDictionary<TKey, TValue>
.
Применение хэш-таблиц
Хэш-таблицы применяются в кэширующих механизмах, обработке данных, индексации и других задачах, требующих быстрого поиска.