Sobes.tech
Junior

Ce este HashSet în C#?

sobes.tech AI

Răspuns de la AI

HashSet<T> este o colecție nesortată de elemente unice. Se bazează pe o tabelă hash și oferă operații rapide de adăugare, ștergere și verificare a existenței elementelor (în medie, în timp constant, O(1)).

Caracteristici principale ale HashSet<T>:

  • Unicitate: Nu poate conține duplicate. Încercarea de a adăuga un element existent va fi ignorată.
  • Nesortat: Elementele nu sunt stocate într-o anumită ordine. Ordinea de iterare poate diferi de ordinea de adăugare.
  • Performanță: Datorită utilizării hashing-ului, operațiile de căutare, adăugare și ștergere au, în medie, complexitatea O(1). În cel mai rău caz (cu o funcție hash slabă sau coliziuni), performanța poate scădea.
  • Operații multiple: Suportă diverse operații precum uniune (UnionWith), intersecție (IntersectWith), diferență (ExceptWith), verificare de submulțime sau supermulțime (IsSubsetOf, IsSupersetOf).

Exemplu de utilizare:

// Creare HashSet
HashSet<string> fruits = new HashSet<string>();

// Adăugare elemente
fruits.Add("măr");
fruits.Add("banană");
fruits.Add("portocală");
fruits.Add("măr"); // Va fi ignorat, deoarece "măr" există deja

// Verificare existență element
bool hasBanană = fruits.Contains("banană"); // true
bool hasStrugure = fruits.Contains("strugure"); // false

// Ștergere element
fruits.Remove("portocală");

// Parcurgere elemente
foreach (string fruit in fruits)
{
    // Afișare: măr, banană (ordinea poate varia)
    Console.WriteLine(fruit);
}

// Dimensiunea colecției
int count = fruits.Count; // 2

HashSet<T> implementează interfețele ICollection<T>, IEnumerable<T> și ISet<T>, ceea ce permite utilizarea sa în diverse scenarii de colecții și efectuarea de operații specifice de mulțimi.