Junior
Co je to HashSet v C#?
sobes.tech AI
Odpověď od AI
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ů (v průměru 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í. Pořadí iterace se může lišit od pořadí 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í se může lišit)
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.