V C# je HashSet neuspořádanou sbírkou jedinečných prvků. Tato kolekce je představena v .NET 3.5 . Podporuje implementaci sad a pro ukládání používá hashovací tabulku. Tato kolekce je kolekce obecného typu a je definována pod System.Collections.Generic jmenný prostor. Obecně se používá, když chceme zabránit umístění duplicitních prvků do kolekce. Výkon HashSet je mnohem lepší ve srovnání se seznamem.
Důležité body související s HashSet v C#
- Třída HashSet implementuje ICollection , IEpočetné , IReadOnlyCollection , Září , IEpočetné , IDeserializationCallback , a ISerializovatelný rozhraní.
- V HashSet není pořadí prvku definováno. Nemůžete třídit prvky HashSet.
- V HashSet musí být prvky jedinečné.
- V HashSet nejsou povoleny duplicitní prvky.
- Poskytuje mnoho matematických množinových operací, jako je průnik, sjednocení a rozdíl.
- Kapacita HashSet je počet prvků, které může pojmout.
- HashSet je dynamická kolekce znamená, že velikost HashSet se automaticky zvětší, když jsou přidány nové prvky.
- V HashSet můžete uložit pouze stejný typ prvků.
Jak vytvořit HashSet?
Třída HashSet poskytuje 7 různých typů konstruktorů které se používají k vytvoření HashSet, zde používáme pouze HashSet() , konstruktér. Chcete-li si přečíst více o konstruktorech HashSet, můžete se obrátit na C# | Třída HashSet .
HashSet(): Používá se k vytvoření instance třídy HashSet, která je prázdná a používá výchozí porovnávač rovnosti pro typ sady.
Krok 1: Zahrnout System.Collections.Generic jmenný prostor ve vašem programu s pomocí použitím klíčové slovo:
using System.Collections.Generic;>
Krok 2: Vytvořte HashSet pomocí třídy HashSet, jak je znázorněno níže:
HashSet Hashset_name = new HashSet();>
Krok 3: Pokud chcete přidat prvky do vaší HashSet, použijte Přidat() metoda pro přidání prvků do vaší HashSet. A můžete také ukládat prvky do vaší HashSet pomocí inicializátoru kolekce.
Krok 4: K prvkům HashSet se přistupuje pomocí a pro každého smyčka. Jak je ukázáno v níže uvedeném příkladu.
Příklad:
C#
dělat, zatímco Java
// C# program to illustrate how to> // create hashset> using> System;> using> System.Collections.Generic;> class> GFG {> >// Main Method> >static> public> void> Main()> >{> >// Creating HashSet> >// Using HashSet class> >HashSet<>string>>myhash1 =>new> HashSet<>string>>();> >// Add the elements in HashSet> >// Using Add method> >myhash1.Add(>'C'>);> >myhash1.Add(>'C++'>);> >myhash1.Add(>'C#'>);> >myhash1.Add(>'Java'>);> >myhash1.Add(>'Ruby'>);> >Console.WriteLine(>'Elements of myhash1:'>);> >// Accessing elements of HashSet> >// Using foreach loop> >foreach>(>var> val>in> myhash1)> >{> >Console.WriteLine(val);> >}> >// Creating another HashSet> >// using collection initializer> >// to initialize HashSet> >HashSet<>int>>myhash2 =>new> HashSet<>int>>() {10,> >100,1000,10000,100000};> > >// Display elements of myhash2> >Console.WriteLine(>'Elements of myhash2:'>);> >foreach>(>var> value>in> myhash2)> >{> >Console.WriteLine(value);> >}> >}> }> |
>
>
tcp vs udpVýstup
Elements of myhash1: C C++ C# Java Ruby Elements of myhash2: 10 100 1000 10000 100000>
Jak odstranit prvky z HashSet?
V HashSet máte povoleno odstraňovat prvky z HashSet. Třída HashSet poskytuje tři různé metody pro odstranění prvků a tyto metody jsou:
- Odebrat (T) : Tato metoda se používá k odstranění zadaného prvku z objektu HashSet.
- Odebrat kde (predikát) : Tato metoda se používá k odstranění všech prvků, které odpovídají podmínkám definovaným zadaným predikátem z kolekce HashSet.
- Průhledná : Tato metoda se používá k odstranění všech prvků z objektu HashSet.
Příklad 1:
C#
// C# program to illustrate how to> // remove elements of HashSet> using> System;> using> System.Collections.Generic;> class> GFG {> >// Main Method> >static> public> void> Main()> >{> >// Creating HashSet> >// Using HashSet class> >HashSet<>string>>myhash =>new> HashSet<>string>>();> >// Add the elements in HashSet> >// Using Add method> >myhash.Add(>'C'>);> >myhash.Add(>'C++'>);> >myhash.Add(>'C#'>);> >myhash.Add(>'Java'>);> >myhash.Add(>'Ruby'>);> >// Before using Remove method> >Console.WriteLine(>'Total number of elements present (Before Removal)'>+> >' in myhash: {0}'>, myhash.Count);> >// Remove element from HashSet> >// Using Remove method> >myhash.Remove(>'Ruby'>);> >// After using Remove method> >Console.WriteLine(>'Total number of elements present (After Removal)'>+> >' in myhash: {0}'>, myhash.Count);> >// Remove all elements from HashSet> >// Using Clear method> >myhash.Clear();> >Console.WriteLine(>'Total number of elements present'>+> >' in myhash:{0}'>, myhash.Count);> >}> }> |
>
>Výstup
Total number of elements present in myhash: 5 Total number of elements present in myhash: 4 Total number of elements present in myhash:0>
Nastavení operací
Třída HashSet také poskytuje některé metody, které se používají k provádění různých operací na sadách, a tyto metody jsou:
- UnionWith(IEpočetné) : Tato metoda se používá k úpravě aktuálního objektu HashSet tak, aby obsahoval všechny prvky, které jsou přítomné v něm samotném, v zadané kolekci nebo obojí.
Příklad:
C#
dále java skener
// C# program to illustrate set operations> using> System;> using> System.Collections.Generic;> class> GFG {> >static> public> void> Main()> >{> >// Creating HashSet> >// Using HashSet class> >HashSet<>string>>myhash1 =>new> HashSet<>string>>();> >// Add the elements in HashSet> >// Using Add method> >myhash1.Add(>'C'>);> >myhash1.Add(>'C++'>);> >myhash1.Add(>'C#'>);> >myhash1.Add(>'Java'>);> >myhash1.Add(>'Ruby'>);> >// Creating another HashSet> >// Using HashSet class> >HashSet<>string>>myhash2 =>new> HashSet<>string>>();> >// Add the elements in HashSet> >// Using Add method> >myhash2.Add(>'PHP'>);> >myhash2.Add(>'C++'>);> >myhash2.Add(>'Perl'>);> >myhash2.Add(>'Java'>);> >// Using UnionWith method> >myhash1.UnionWith(myhash2);> >foreach>(>var> ele>in> myhash1)> >{> >Console.WriteLine(ele);> >}> >}> }> |
>
>Výstup
C C++ C# Java Ruby PHP Perl>
- IntersectWith(IEnumerable) : Tato metoda se používá k úpravě aktuálního objektu HashSet tak, aby obsahoval pouze prvky, které jsou přítomny v tomto objektu a v zadané kolekci.
Příklad:
C#
// C# program to illustrate set operations> using> System;> using> System.Collections.Generic;> class> GFG {> >// Main Method> >static> public> void> Main()> >{> >// Creating HashSet> >// Using HashSet class> >HashSet<>string>>myhash1 =>new> HashSet<>string>>();> >// Add the elements in HashSet> >// Using Add method> >myhash1.Add(>'C'>);> >myhash1.Add(>'C++'>);> >myhash1.Add(>'C#'>);> >myhash1.Add(>'Java'>);> >myhash1.Add(>'Ruby'>);> >// Creating another HashSet> >// Using HashSet class> >HashSet<>string>>myhash2 =>new> HashSet<>string>>();> >// Add the elements in HashSet> >// Using Add method> >myhash2.Add(>'PHP'>);> >myhash2.Add(>'C++'>);> >myhash2.Add(>'Perl'>);> >myhash2.Add(>'Java'>);> >// Using IntersectWith method> >myhash1.IntersectWith(myhash2);> >foreach>(>var> ele>in> myhash1)> >{> >Console.WriteLine(ele);> >}> >}> }> |
kolik je tam ovoce
>
>Výstup
C++ Java>
- ExceptWith (IEnumerable) : Tato metoda se používá k odstranění všech prvků v zadané kolekci z aktuálního objektu HashSet.
Příklad:
C#
omezení elektronického bankovnictví
// C# program to illustrate set operations> using> System;> using> System.Collections.Generic;> class> GFG {> >// Main Method> >static> public> void> Main()> >{> >// Creating HashSet> >// Using HashSet class> >HashSet<>string>>myhash1 =>new> HashSet<>string>>();> >// Add the elements in HashSet> >// Using Add method> >myhash1.Add(>'C'>);> >myhash1.Add(>'C++'>);> >myhash1.Add(>'C#'>);> >myhash1.Add(>'Java'>);> >myhash1.Add(>'Ruby'>);> >// Creating another HashSet> >// Using HashSet class> >HashSet<>string>>myhash2 =>new> HashSet<>string>>();> >// Add the elements in HashSet> >// Using Add method> >myhash2.Add(>'PHP'>);> >myhash2.Add(>'C++'>);> >myhash2.Add(>'Perl'>);> >myhash2.Add(>'Java'>);> >// Using ExceptWith method> >myhash1.ExceptWith(myhash2);> >foreach>(>var> ele>in> myhash1)> >{> >Console.WriteLine(ele);> >}> >}> }> |
>
>Výstup
C C# Ruby>