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.