HashSet i C# med eksempler

I C# er HashSet en uordnet samling unike elementer. Denne samlingen introduseres i .NET 3.5 . Den støtter implementering av sett og bruker hash-tabellen for lagring. Denne samlingen er av den generiske typen samling og den er definert under System.Samlinger.Generisk navneområde. Det brukes vanligvis når vi ønsker å forhindre at dupliserte elementer plasseres i samlingen. Ytelsen til HashSet er mye bedre sammenlignet med listen.

Viktige punkter knyttet til HashSet i C#

  • HashSet-klassen implementerer ICollection , IEnumerable , IReadOnlyCollection , sept , IEnumerable , IDeserializationCallback , og ISerialiserbar grensesnitt.
  • I HashSet er rekkefølgen til elementet ikke definert. Du kan ikke sortere elementene i HashSet.
  • I HashSet må elementene være unike.
  • I HashSet er dupliserte elementer ikke tillatt.
  • Det gir mange matematiske settoperasjoner, for eksempel kryss, forening og forskjell.
  • Kapasiteten til et HashSet er antall elementer det kan inneholde.
  • Et HashSet er en dynamisk samling betyr at størrelsen på HashSet automatisk økes når de nye elementene legges til.
  • I HashSet kan du bare lagre den samme typen elementer.

Hvordan lage et hashsett?

HashSet-klassen gir 7 forskjellige typer konstruktører som brukes til å lage et HashSet, her bruker vi kun HashSet() , konstruktør. For å lese mer om HashSets konstruktører kan du referere til C# | HashSet-klasse .

HashSet(): Den brukes til å lage en forekomst av HashSet-klassen som er tom og bruker standard likhetssammenligner for setttypen.

Trinn 1: Inkludere System.Samlinger.Generisk navneområde i programmet ditt ved hjelp av ved hjelp av nøkkelord:

using System.Collections.Generic; 

Steg 2: Lag et HashSet ved å bruke HashSet-klassen som vist nedenfor:

HashSet Hashset_name = new HashSet(); 

Trinn 3: Hvis du vil legge til elementer i HashSet, så bruk Legg til() metode for å legge til elementer i HashSet. Og du kan også lagre elementer i HashSet ved å bruke samlingsinitialiser.

Trinn 4: Elementene i HashSet får du tilgang til ved å bruke en for hver Løkke. Som vist i eksemplet nedenfor.

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);> > }> > }> }>

Produksjon

Elements of myhash1: C C++ C# Java Ruby Elements of myhash2: 10 100 1000 10000 100000 

Hvordan fjerne elementer fra HashSet?

I HashSet har du lov til å fjerne elementer fra HashSet. HashSet-klassen gir tre forskjellige metoder for å fjerne elementer, og metodene er:

  • Fjern (T) : Denne metoden brukes til å fjerne det angitte elementet fra et HashSet-objekt.
  • RemoveWhere(Predikat) : Denne metoden brukes til å fjerne alle elementer som samsvarer med betingelsene definert av det spesifiserte predikatet fra en HashSet-samling.
  • Klar : Denne metoden brukes til å 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);> > }> }>

Produksjon

Total number of elements present in myhash: 5 Total number of elements present in myhash: 4 Total number of elements present in myhash:0 

Angi operasjoner

HashSet-klassen gir også noen metoder som brukes til å utføre forskjellige operasjoner på sett, og metodene er:

  • UnionWith(IEnumerable) : Denne metoden brukes til å endre det gjeldende HashSet-objektet til å inneholde alle elementer som er tilstede i seg selv, den angitte samlingen eller begge deler.

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);> > }> > }> }>

Produksjon

C C++ C# Java Ruby PHP Perl 
  • IntersectWith(IEnumerable) : Denne metoden brukes til å endre det gjeldende HashSet-objektet til å inneholde bare elementer som er tilstede i det objektet og i den angitte samlingen.
    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);> > }> > }> }>

Produksjon

C++ Java 
  • ExceptWith(IEnumerable) : Denne metoden brukes til å fjerne alle elementer i den angitte samlingen fra det gjeldende HashSet-objektet.

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);> > }> > }> }>

Produksjon

C C# Ruby