Sobes.tech
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.