Sobes.tech
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>, което позволява използването му в различни сценарии на колекции и изпълнение на специфични операции върху множества.