In C# ist HashSet eine ungeordnete Sammlung eindeutiger Elemente. Diese Sammlung wird eingeführt in .NET 3.5 . Es unterstützt die Implementierung von Mengen und nutzt die Hash-Tabelle zur Speicherung. Diese Sammlung ist vom generischen Typ Sammlung und wird unter definiert System.Collections.Generic Namensraum. Es wird im Allgemeinen verwendet, wenn wir verhindern möchten, dass doppelte Elemente in der Sammlung platziert werden. Die Leistung des HashSet ist im Vergleich zur Liste viel besser.
Wichtige Punkte im Zusammenhang mit HashSet in C#
- Die HashSet-Klasse implementiert die ICollection , IEnumerable , IReadOnlyCollection , Sept , IEnumerable , IDeserializationCallback , Und ISerialisierbar Schnittstellen.
- In HashSet ist die Reihenfolge der Elemente nicht definiert. Sie können die Elemente von HashSet nicht sortieren.
- In HashSet müssen die Elemente eindeutig sein.
- In HashSet sind doppelte Elemente nicht zulässig.
- Es bietet viele mathematische Mengenoperationen wie Schnittmenge, Vereinigung und Differenz.
- Die Kapazität eines HashSets ist die Anzahl der Elemente, die es enthalten kann.
- Ein HashSet ist eine dynamische Sammlung, d. h. die Größe des HashSets wird automatisch erhöht, wenn neue Elemente hinzugefügt werden.
- In HashSet können Sie nur Elemente desselben Typs speichern.
Wie erstelle ich ein HashSet?
Die HashSet-Klasse bietet 7 verschiedene Arten von Konstruktoren die zum Erstellen eines HashSets verwendet werden, hier verwenden wir nur HashSet() , Konstrukteur. Weitere Informationen zu den Konstruktoren von HashSet finden Sie hier C# | HashSet-Klasse .
HashSet(): Es wird verwendet, um eine Instanz der HashSet-Klasse zu erstellen, die leer ist und den Standard-Gleichheitsvergleicher für den Set-Typ verwendet.
Schritt 1: Enthalten System.Collections.Generic Namensraum in Ihrem Programm mit Hilfe von verwenden Stichwort:
using System.Collections.Generic;>
Schritt 2: Erstellen Sie ein HashSet mit der HashSet-Klasse wie unten gezeigt:
HashSet Hashset_name = new HashSet();>
Schritt 3: Wenn Sie Ihrem HashSet Elemente hinzufügen möchten, verwenden Sie Hinzufügen() Methode zum Hinzufügen von Elementen zu Ihrem HashSet. Und Sie können Elemente auch mit dem Sammlungsinitialisierer in Ihrem HashSet speichern.
Schritt 4: Der Zugriff auf die Elemente von HashSet erfolgt über a für jede Schleife. Wie im folgenden Beispiel gezeigt.
Beispiel:
C#
wenn sonst, wenn sonst 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);> >}> >}> }> |
>
>Ausgabe
Elements of myhash1: C C++ C# Java Ruby Elements of myhash2: 10 100 1000 10000 100000>
Wie entferne ich Elemente aus dem HashSet?
In HashSet dürfen Sie Elemente aus dem HashSet entfernen. Die HashSet-Klasse bietet drei verschiedene Methoden zum Entfernen von Elementen. Die Methoden sind:
- Entfernen(T) : Mit dieser Methode wird das angegebene Element aus einem HashSet-Objekt entfernt.
- RemoveWhere(Prädikat) : Mit dieser Methode werden alle Elemente aus einer HashSet-Sammlung entfernt, die den durch das angegebene Prädikat definierten Bedingungen entsprechen.
- Klar : Mit dieser Methode werden alle Elemente aus einem HashSet-Objekt entfernt.
Beispiel 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);> >}> }> |
>
>Ausgabe
Total number of elements present in myhash: 5 Total number of elements present in myhash: 4 Total number of elements present in myhash:0>
Operationen festlegen
Die HashSet-Klasse stellt auch einige Methoden bereit, die zum Ausführen verschiedener Operationen an Mengen verwendet werden. Die Methoden sind:
- UnionWith(IEnumerable) : Mit dieser Methode wird das aktuelle HashSet-Objekt so geändert, dass es alle Elemente enthält, die in ihm selbst, der angegebenen Sammlung oder beiden vorhanden sind.
Beispiel:
.nächstes Java
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);> >}> >}> }> |
>
>Ausgabe
C C++ C# Java Ruby PHP Perl>
- IntersectWith(IEnumerable) : Mit dieser Methode wird das aktuelle HashSet-Objekt so geändert, dass es nur Elemente enthält, die in diesem Objekt und in der angegebenen Sammlung vorhanden sind.
Beispiel:
C#
Beispiel für einen Java-Teilstring
// 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);> >}> >}> }> |
>
Römische Zahlen 1 bis 100
>Ausgabe
C++ Java>
- ExceptWith(IEnumerable) : Mit dieser Methode werden alle Elemente in der angegebenen Sammlung aus dem aktuellen HashSet-Objekt entfernt.
Beispiel:
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);> >}> >}> }> |
>
>Ausgabe
C C# Ruby>