HashSet v C# s príkladmi
V C# je HashSet neusporiadaná zbierka jedinečných prvkov. Táto kolekcia je predstavená v .NET 3.5 . Podporuje implementáciu sád a na ukladanie používa hash tabuľku. Táto kolekcia je kolekciou generického typu a je definovaná pod System.Collections.Generic menný priestor. Vo všeobecnosti sa používa, keď chceme zabrániť umiestneniu duplicitných prvkov do kolekcie. Výkon HashSet je oveľa lepší v porovnaní so zoznamom.
Dôležité body súvisiace s HashSet v C#
- Trieda HashSet implementuje ICollection , IEpočetné , IReadOnlyCollection , sept , IEpočetné , IDeserializationCallback , a ISerializovateľné rozhrania.
- V HashSet nie je definované poradie prvku. Nemôžete triediť prvky HashSet.
- V HashSet musia byť prvky jedinečné.
- V HashSet nie sú povolené duplicitné prvky.
- Poskytuje mnoho matematických množinových operácií, ako sú priesečník, spojenie a rozdiel.
- Kapacita HashSet je počet prvkov, ktoré môže obsahovať.
- HashSet je dynamická kolekcia znamená, že veľkosť HashSet sa automaticky zväčší, keď sa pridajú nové prvky.
- V HashSet môžete uložiť iba rovnaký typ prvkov.
Ako vytvoriť HashSet?
Trieda HashSet poskytuje 7 rôznych typov konštruktérov ktoré sa používajú na vytvorenie HashSet, tu používame iba HashSet() , konštruktér. Ak si chcete prečítať viac o konštruktoroch HashSet, môžete sa obrátiť na C# | Trieda HashSet .
HashSet(): Používa sa na vytvorenie inštancie triedy HashSet, ktorá je prázdna a používa predvolený porovnávač rovnosti pre typ sady.
Krok 1: Zahrnúť System.Collections.Generic menný priestor vo vašom programe pomocou použitím kľúčové slovo:
using System.Collections.Generic;
Krok 2: Vytvorte HashSet pomocou triedy HashSet, ako je uvedené nižšie:
HashSet Hashset_name = new HashSet();
Krok 3: Ak chcete pridať prvky do svojej HashSet, použite Pridať () metóda na pridanie prvkov do vašej HashSet. A môžete tiež ukladať prvky vo svojej HashSet pomocou inicializátora kolekcie.
Krok 4: Prvky HashSet sú prístupné pomocou a pre každý slučka. Ako je uvedené v príklade nižšie.
Príklad:
C#
// 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);> > }> > }> }> |
Výkon
Elements of myhash1: C C++ C# Java Ruby Elements of myhash2: 10 100 1000 10000 100000
Ako odstrániť prvky z HashSet?
V HashSet máte povolené odstraňovať prvky z HashSet. Trieda HashSet poskytuje tri rôzne metódy na odstránenie prvkov a tieto metódy sú:
- Odstrániť (T) : Táto metóda sa používa na odstránenie zadaného prvku z objektu HashSet.
- RemoveWhere (Predicate) : Táto metóda sa používa na odstránenie všetkých prvkov, ktoré zodpovedajú podmienkam definovaným zadaným predikátom z kolekcie HashSet.
- jasný : Táto metóda sa používa na odstránenie všetkých prvkov z objektu HashSet.
Prí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ýkon
Total number of elements present in myhash: 5 Total number of elements present in myhash: 4 Total number of elements present in myhash:0
Nastaviť operácie
Trieda HashSet tiež poskytuje niektoré metódy, ktoré sa používajú na vykonávanie rôznych operácií na množinách a tieto metódy sú:
- UnionWith(IEnumerable) : Táto metóda sa používa na úpravu aktuálneho objektu HashSet tak, aby obsahoval všetky prvky, ktoré sú v ňom prítomné, v zadanej kolekcii alebo v oboch.
Príklad:
C#
// 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ýkon
C C++ C# Java Ruby PHP Perl
- IntersectWith(IEnumerable) : Táto metóda sa používa na úpravu aktuálneho objektu HashSet tak, aby obsahoval iba prvky, ktoré sú prítomné v tomto objekte a v zadanej kolekcii.
Prí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);> > }> > }> }> |
Výkon
C++ Java
- ExceptWith(IEnumerable) : Táto metóda sa používa na odstránenie všetkých prvkov v zadanej kolekcii z aktuálneho objektu HashSet.
Prí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 ExceptWith method> > myhash1.ExceptWith(myhash2);> > foreach> (> var> ele> in> myhash1)> > {> > Console.WriteLine(ele);> > }> > }> }> |
Výkon
C C# Ruby