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