Sobes.tech
Junior

Šta je HashSet u C#?

sobes.tech АИ

Одговор од АИ

HashSet<T> je neuspořádaná kolekce unikátních prvků. Je založena na hash tabulce a poskytuje rychlé operace přidávání, odstraňování a kontroly přítomnosti prvků (průměrně v konstantním čase, O(1)).

Hlavní vlastnosti HashSet<T>:

  • Unikátnost: Nemůže obsahovat duplicity. Při pokusu přidat existující prvek je operace ignorována.
  • Nepořádanost: Prvky nejsou uloženy v žádném specifickém pořadí. Řada iterace se může lišit od řady přidání.
  • Výkon: Díky použití hashování mají operace hledání, přidávání a odstraňování průměrnou složitost O(1). V nejhorším případě (špatná hash funkce nebo kolize) může výkon klesnout.
  • Více operací: Podporuje různé operace jako sjednocení (UnionWith), průnik (IntersectWith), rozdíl (ExceptWith), kontrolu podmnožiny nebo nadmnožiny (IsSubsetOf, IsSupersetOf).

Příklad použití:

// Vytvoření HashSet
HashSet<string> fruits = new HashSet<string>();

// Přidání prvků
fruits.Add("jablko");
fruits.Add("banán");
fruits.Add("pomeranč");
fruits.Add("jablko"); // Bude ignorováno, protože "jablko" již existuje

// Kontrola existence prvku
bool hasBanana = fruits.Contains("banán"); // true
bool hasGrape = fruits.Contains("hrozno"); // false

// Odstranění prvku
fruits.Remove("pomeranč");

// Procházení prvků
foreach (string fruit in fruits)
{
    // Výstup: jablko, banán (pořadí může být různé)
    Console.WriteLine(fruit);
}

// Velikost kolekce
int count = fruits.Count; // 2

HashSet<T> implementuje rozhraní ICollection<T>, IEnumerable<T> a ISet<T>, což umožňuje jeho použití v různých scénářích kolekcí a provádění specifických operací nad množinami.