In C# is HashSet een ongeordende verzameling unieke elementen. Deze collectie wordt geïntroduceerd in .NET 3.5 . Het ondersteunt de implementatie van sets en gebruikt de hashtabel voor opslag. Deze verzameling is van het generieke type verzameling en wordt gedefinieerd onder Systeem.Collecties.Generiek naamruimte. Het wordt over het algemeen gebruikt als we willen voorkomen dat dubbele elementen in de collectie worden geplaatst. De prestaties van de HashSet zijn veel beter in vergelijking met de lijst.
Belangrijke punten gerelateerd aan HashSet in C#
- De klasse HashSet implementeert de ICollectie , IOntelbaar , IReadOnlyCollection , september , IOntelbaar , IDeserialisatieCallback , En ISerialiseerbaar interfaces.
- In HashSet is de volgorde van het element niet gedefinieerd. U kunt de elementen van HashSet niet sorteren.
- In HashSet moeten de elementen uniek zijn.
- In HashSet zijn dubbele elementen niet toegestaan.
- Het biedt veel wiskundige verzamelingsbewerkingen, zoals snijpunt, vereniging en verschil.
- De capaciteit van een HashSet is het aantal elementen dat deze kan bevatten.
- Een HashSet is een dynamische verzameling, wat betekent dat de grootte van de HashSet automatisch wordt vergroot wanneer de nieuwe elementen worden toegevoegd.
- In HashSet kunt u alleen hetzelfde type elementen opslaan.
Hoe maak je een hashset?
De klasse HashSet biedt 7 verschillende soorten constructeurs die worden gebruikt om een HashSet te maken, hier gebruiken we alleen HashSet() , constructeur. Voor meer informatie over de constructors van HashSet kunt u verwijzen naar C# | HashSet-klasse .
HashSet(): Het wordt gebruikt om een exemplaar van de klasse HashSet te maken dat leeg is en de standaard gelijkheidsvergelijker voor het settype gebruikt.
Stap 1: Erbij betrekken Systeem.Collecties.Generiek naamruimte in uw programma met behulp van gebruik makend van trefwoord:
using System.Collections.Generic;>
Stap 2: Maak een HashSet met behulp van de HashSet-klasse, zoals hieronder weergegeven:
HashSet Hashset_name = new HashSet();>
Stap 3: Als je elementen aan je HashSet wilt toevoegen, gebruik dan Toevoegen() methode om elementen toe te voegen aan uw HashSet. En u kunt ook elementen in uw HashSet opslaan met behulp van de verzamelingsinitialisatie.
Stap 4: De elementen van HashSet zijn toegankelijk via een voorleggen lus. Zoals weergegeven in het onderstaande voorbeeld.
Voorbeeld:
C#
typecasting en typeconversie in 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>>mijnhash1 =>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>>mijnhash2 =>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);> >}> >}> }> |
>
>
iskcon volledige vormUitvoer
Elements of myhash1: C C++ C# Java Ruby Elements of myhash2: 10 100 1000 10000 100000>
Hoe elementen uit de HashSet verwijderen?
In HashSet mag je elementen uit de HashSet verwijderen. De HashSet-klasse biedt drie verschillende methoden om elementen te verwijderen en de methoden zijn:
- Verwijderen(T) : Deze methode wordt gebruikt om het opgegeven element uit een HashSet-object te verwijderen.
- VerwijderWaar(Predikaat) : Deze methode wordt gebruikt om alle elementen uit een HashSet-verzameling te verwijderen die voldoen aan de voorwaarden die zijn gedefinieerd door het opgegeven predikaat.
- Duidelijk : Deze methode wordt gebruikt om alle elementen uit een HashSet-object te verwijderen.
Voorbeeld 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>>mijnhash =>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);> >}> }> |
>
>Uitvoer
Total number of elements present in myhash: 5 Total number of elements present in myhash: 4 Total number of elements present in myhash:0>
Bewerkingen instellen
De HashSet-klasse biedt ook enkele methoden die worden gebruikt om verschillende bewerkingen op sets uit te voeren en de methoden zijn:
- UnionWith(IEnumerabel) : Deze methode wordt gebruikt om het huidige HashSet-object aan te passen zodat het alle elementen bevat die op zichzelf, de opgegeven verzameling of beide aanwezig zijn.
Voorbeeld:
C#
ontkenning discrete wiskunde
// 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>>mijnhash1 =>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>>mijnhash2 =>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);> >}> >}> }> |
>
>Uitvoer
C C++ C# Java Ruby PHP Perl>
- SnijMet(IEnumerabel) : Deze methode wordt gebruikt om het huidige HashSet-object zo te wijzigen dat het alleen elementen bevat die aanwezig zijn in dat object en in de opgegeven verzameling.
Voorbeeld:
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>>mijnhash1 =>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>>mijnhash2 =>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);> >}> >}> }> |
Python programmalijst
>
>Uitvoer
C++ Java>
- BehalveMet(IEnumerabel) : Deze methode wordt gebruikt om alle elementen in de opgegeven verzameling uit het huidige HashSet-object te verwijderen.
Voorbeeld:
C#
np.log
// 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>>mijnhash1 =>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>>mijnhash2 =>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);> >}> >}> }> |
>
>Uitvoer
C C# Ruby>