Junior
Čo je HashSet v C#?
sobes.tech AI
Odpoveď od AI
HashSet<T> je neusporiadaná kolekcia unikátnych prvkov. Je založená na hash tabuľke a poskytuje rýchle operácie pridávania, odstraňovania a kontroly prítomnosti prvkov (v priemere v konštantnom čase, O(1)).
Hlavné vlastnosti HashSet<T>:
- Unikátnosť: Nemôže obsahovať duplikáty. Pri pokuse pridať existujúci prvok je operácia ignorovaná.
- Neusporiadanosť: Prvky nie sú uložené v žiadnom špecifickom poradí. Poradie iterácie sa môže líšiť od poradia pridania.
- Výkon: Vďaka použitiu hashovania majú operácie vyhľadávania, pridávania a odstraňovania priemernú zložitosť O(1). V najhoršom prípade (zlá hash funkcia alebo kolízie) môže výkon klesnúť.
- Viaceré operácie: Podporuje rôzne operácie ako zjednotenie (
UnionWith), prienik (IntersectWith), rozdiel (ExceptWith), kontrolu podmnožiny alebo nadmnožiny (IsSubsetOf,IsSupersetOf).
Príklad použitia:
// Vytvorenie HashSet
HashSet<string> fruits = new HashSet<string>();
// Pridanie prvkov
fruits.Add("jablko");
fruits.Add("banán");
fruits.Add("pomaranč");
fruits.Add("jablko"); // Bude ignorované, pretože "jablko" už existuje
// Kontrola, či prvok existuje
bool hasBanana = fruits.Contains("banán"); // true
bool hasGrape = fruits.Contains("hrozno"); // false
// Odstránenie prvku
fruits.Remove("pomaranč");
// Prechádzanie prvkov
foreach (string fruit in fruits)
{
// Výstup: jablko, banán (poradie sa môže líšiť)
Console.WriteLine(fruit);
}
// Veľkosť kolekcie
int count = fruits.Count; // 2
HashSet<T> implementuje rozhrania ICollection<T>, IEnumerable<T> a ISet<T>, čo umožňuje jeho použitie v rôznych scenároch kolekcií a vykonávanie špecifických operácií nad množinami.