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