Junior
112
questionbank
Что такое HashSet в C#?
Answer from AI
sobes.tech AI
HashSet<T> — это неупорядоченная коллекция уникальных элементов. Она основана на хэш-таблице и обеспечивает быстрые операции добавления, удаления и проверки наличия элементов (в среднем за константное время, O(1)).
Основные характеристики HashSet<T>:
- Уникальность: Не может содержать дубликаты. При попытке добавить существующий элемент, операция игнорируется.
- Неупорядоченность: Элементы не хранятся в каком-либо определенном порядке. Порядок перебора может отличаться от порядка добавления.
- Производительность: Благодаря использованию хэширования, операции поиска, добавления и удаления в среднем имеют сложность O(1). В худшем случае (при плохом хэш-функционировании или коллизиях) производительность может снижаться.
- Множественные операции: Поддерживает множество операций, таких как объединение (
UnionWith), пересечение (IntersectWith), разность (ExceptWith), проверка подмножества или надмножества (IsSubsetOf,IsSupersetOf).
Пример использования:
// Создание HashSet
HashSet<string> fruits = new HashSet<string>();
// Добавление элементов
fruits.Add("apple");
fruits.Add("banana");
fruits.Add("orange");
fruits.Add("apple"); // Будет проигнорировано, так как "apple" уже есть
// Проверка наличия элемента
bool hasBanana = fruits.Contains("banana"); // true
bool hasGrape = fruits.Contains("grape"); // false
// Удаление элемента
fruits.Remove("orange");
// Перебор элементов
foreach (string fruit in fruits)
{
// Вывод: apple, banana (порядок может варьироваться)
Console.WriteLine(fruit);
}
// Размер коллекции
int count = fruits.Count; // 2
HashSet<T> реализует интерфейсы ICollection<T>, IEnumerable<T> и ISet<T>, что позволяет использовать его в различных сценариях коллекций и выполнять специфичные для множеств операции.