HashSet i C# med eksempler

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#




// 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#




// 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#




// 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