I C# er HashSet en uordnet samling af unikke elementer. Denne samling introduceres i .NET 3.5 . Det understøtter implementeringen af sæt og bruger hash-tabellen til opbevaring. Denne samling er af den generiske type samling og den er defineret under System.Collectioner.Generisk navneområde. Det bruges generelt, når vi vil forhindre, at duplikerede elementer placeres i samlingen. Ydeevnen af HashSet er meget bedre i forhold til listen.
Vigtige punkter relateret til HashSet i C#
- HashSet-klassen implementerer ICollection , IEnumerable , IReadOnly Collection , Sept , IEnumerable , IDeserializationCallback , og ISerialiserbar grænseflader.
- I HashSet er rækkefølgen af elementet ikke defineret. Du kan ikke sortere elementerne i HashSet.
- I HashSet skal elementerne være unikke.
- I HashSet er duplikerede elementer ikke tilladt.
- Det giver mange matematiske sæt operationer, såsom skæring, forening og forskel.
- Kapaciteten af et HashSet er antallet af elementer, det kan indeholde.
- Et HashSet er en dynamisk samling betyder, at størrelsen af HashSet automatisk øges, når de nye elementer tilføjes.
- I HashSet kan du kun gemme den samme type elementer.
Hvordan opretter man et HashSet?
HashSet-klassen giver 7 forskellige typer konstruktører som bruges til at lave et HashSet, her bruger vi kun HashSet() , konstruktør. For at læse mere om HashSets konstruktører kan du henvise til C# | HashSet klasse .
HashSet(): Den bruges til at oprette en instans af HashSet-klassen, der er tom og bruger standard lighedssammenligneren for sættypen.
Trin 1: Omfatte System.Collectioner.Generisk navneområde i dit program ved hjælp af ved brug af søgeord:
using System.Collections.Generic;>
Trin 2: Opret et HashSet ved hjælp af HashSet-klassen som vist nedenfor:
HashSet Hashset_name = new HashSet();>
Trin 3: Hvis du vil tilføje elementer i dit HashSet, så brug Tilføje() metode til at tilføje elementer i dit HashSet. Og du kan også gemme elementer i dit HashSet ved hjælp af samlingsinitializer.
Trin 4: Elementerne i HashSet tilgås ved at bruge en for hver sløjfe. Som vist i nedenstående eksempel.
Eksempel:
C#
tostring metode i 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);> >}> >}> }> |
>
>Produktion
Elements of myhash1: C C++ C# Java Ruby Elements of myhash2: 10 100 1000 10000 100000>
Hvordan fjerner man elementer fra HashSet?
I HashSet har du lov til at fjerne elementer fra HashSet. HashSet-klassen giver tre forskellige metoder til at fjerne elementer, og metoderne er:
- Fjern (T) : Denne metode bruges til at fjerne det angivne element fra et HashSet-objekt.
- RemoveWhere (prædikat) : Denne metode bruges til at fjerne alle elementer, der matcher betingelserne defineret af det angivne prædikat fra en HashSet-samling.
- Klar : Denne metode bruges til at fjerne alle elementer fra et HashSet-objekt.
Eksempel 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);> >}> }> |
>
>Produktion
Total number of elements present in myhash: 5 Total number of elements present in myhash: 4 Total number of elements present in myhash:0>
Indstil operationer
HashSet-klassen giver også nogle metoder, der bruges til at udføre forskellige operationer på sæt, og metoderne er:
- UnionWith(IEnumerable) : Denne metode bruges til at ændre det aktuelle HashSet-objekt til at indeholde alle elementer, der er til stede i sig selv, den angivne samling eller begge dele.
Eksempel:
C#
windows kommando arp
// 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);> >}> >}> }> |
>
>Produktion
C C++ C# Java Ruby PHP Perl>
- IntersectWith(IEnumerable) : Denne metode bruges til at ændre det aktuelle HashSet-objekt til kun at indeholde elementer, der er til stede i det pågældende objekt og i den angivne samling.
Eksempel:
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);> >}> >}> }> |
>
>Produktion
C++ Java>
- ExceptWith(IEnumerable) : Denne metode bruges til at fjerne alle elementer i den angivne samling fra det aktuelle HashSet-objekt.
Eksempel:
C#
skive java-array
// 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);> >}> >}> }> |
>
>Produktion
C C# Ruby>