Sobes.tech
Junior

Mi az a HashSet C#-ban?

sobes.tech MI

Válasz az MI-től

A HashSet<T> egy nem rendezett, egyedi elemekből álló gyűjtemény. Egy hash-táblán alapul, és gyors műveleteket biztosít az elemek hozzáadására, törlésére és létezésük ellenőrzésére (átlagosan konstans időben, O(1)).

A HashSet<T> fő jellemzői:

  • Egyediség: Nem tartalmazhat duplikátumokat. Ha egy létező elemet próbál hozzáadni, a művelet figyelmen kívül marad.
  • Nem rendezett: Az elemek nem tárolódnak meghatározott sorrendben. Az iteráció sorrendje eltérhet a hozzáadás sorrendjétől.
  • Teljesítmény: A hash használatának köszönhetően a keresés, hozzáadás és törlés műveletek átlagosan O(1) komplexitásúak. Rossz hash-függvény vagy ütközések esetén a teljesítmény csökkenhet.
  • Több művelet: Támogatja az olyan műveleteket, mint az unió (UnionWith), metszet (IntersectWith), különbség (ExceptWith), al- vagy fölötteszámítás (IsSubsetOf, IsSupersetOf).

Használati példa:

// HashSet létrehozása
HashSet<string> fruits = new HashSet<string>();

// Elemek hozzáadása
fruits.Add("alma");
fruits.Add("banán");
fruits.Add("narancs");
fruits.Add("alma"); // Figyelmen kívül marad, mivel "alma" már létezik

// Elem létezésének ellenőrzése
bool hasBanana = fruits.Contains("banán"); // true
bool hasGrape = fruits.Contains("szőlő"); // false

// Elem eltávolítása
fruits.Remove("narancs");

// Elemen való iterálás
foreach (string fruit in fruits)
{
    // Kimenet: alma, banán (a sorrend változhat)
    Console.WriteLine(fruit);
}

// Gyűjtemény mérete
int count = fruits.Count; // 2

A HashSet<T> megvalósítja az ICollection<T>, IEnumerable<T> és ISet<T> interfészeket, így különböző gyűjtemény szcenáriókban használható, és speciális halmaz műveleteket végezhetünk vele.