English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In diesem教程 werden wir die HashSet-Klasse von Java lernen. Wir werden durch Beispiele verschiedene Methoden und Operationen des Hash-Sets lernen.
Die HashSet-Klasse der Java Collections-Framework bietet die Funktionen der Hash-Table-Datenstruktur.
es implementiertSet-Schnittstelle.
Um ein Hash-Set zu erstellen, müssen wir zunächst das Paket java.util.HashSet importieren.
Nach dem Import des Pakets können Hash-Sets in Java erstellt werden.
//mit8eine Kapazität und 0.75HashSet mit Lastfaktor HashSet<Integer> numbers = new HashSet<>(8, 0.75);
Hier erstellen wir einen Hash-Set namens numbers.
Beachten Sie, dass der neue Teil HashSet<>(8, 0.75) Hier ist der erste ParameterKapazitätund der zweite Parameter istLastfaktor.
capacity -Die Kapazität dieses Hash-Sets beträgt8. Dies bedeutet, dass es speichern kann8Elemente.
loadFactor - Der Lastfaktor dieses Hash-Sets beträgt 0.6. Dies bedeutet, dass, solange unser Hash-Set gefüllt ist60 %, die Elemente werden in den neuen Hash-Table verschoben, deren Größe die der ursprünglichen Hash-Table verdoppelt ist.
Standardkapazität und Lastfaktor
Die Erstellung eines Hash-Tables ohne Definition der Kapazität und des Lastfaktors ist möglich. Zum Beispiel,
//HashSet mit Standardkapazität und Lastfaktor HashSet<Integer> numbers1 new HashSet<>();
Standardmäßig,
Die Kapazität des Hash-Sets wird 16
Der Lastfaktor wird 0 sein.75
Die HashSet-Klasse bietet verschiedene Methoden, die es uns ermöglichen, verschiedene Operationen auf die Sammlung auszuführen.
add() - Fügen Sie das angegebene Element in die Sammlung ein
addAll() - Fügen Sie alle Elemente der angegebenen Sammlung in die Sammlung ein
Beispielsweise,
import java.util.HashSet; class Main { public static void main(String[] args) { HashSet<Integer> evenNumber = new HashSet<>(); // Verwenden Sie die add() Methode evenNumber.add(2); evenNumber.add(4); evenNumber.add(6); System.out.println("HashSet: ", + evenNumber); HashSet<Integer> numbers = new HashSet<>(); // Verwenden Sie die addAll() Methode numbers.addAll(evenNumber); numbers.add(5); System.out.println("Neuer HashSet: ", + numbers); } }
Ausgaberesultat
HashSet: [2, 4, 6] Neuer HashSet: [2, 4, 5, 6]
Um die Elemente der Hash-Sammlung zu besuchen, können wir das iterator() Methode verwenden. Um diese Methode zu verwenden, müssen wir das Paket java.util.Iterator importieren. Beispielsweise,
import java.util.HashSet; import java.util.Iterator; class Main { public static void main(String[] args) { HashSet<Integer> numbers = new HashSet<>(); numbers.add(2); numbers.add(5); numbers.add(6); System.out.println("HashSet: ", + numbers); // Rufen Sie das iterator() Methode auf Iterator<Integer> iterate = numbers.iterator(); System.out.print("Verwenden Sie den HashSet mit Iterator: ", //Besuchen Sie das Element while(iterate.hasNext()) { System.out.print(iterate.next()); System.out.print(", "); } } }
Ausgaberesultat
HashSet: [2, 5, 6] Verwenden Sie den HashSet mit Iterator: 2, 5, 6,
remove() - Entfernen Sie das angegebene Element aus der Sammlung
removeAll() - Entfernen Sie alle Elemente aus der Sammlung
Beispielsweise,
import java.util.HashSet; class Main { public static void main(String[] args) { HashSet<Integer> numbers = new HashSet<>(); numbers.add(2); numbers.add(5); numbers.add(6); System.out.println("HashSet: ", + numbers); //Verwenden Sie die remove() Methode boolean Wert1 = numbers.remove(5); System.out.println("Wert",5Gelöscht? ", + Wert1); boolean Wert2 = numbers.removeAll(numbers); System.out.println("Sind alle Elemente entfernt? ", + Wert2); } }
Ausgaberesultat
HashSet: [2, 5, 6] Wert5Gelöscht? true Sind alle Elemente entfernt? true
Die verschiedenen Methoden der HashSet-Klasse können auch zur Ausführung verschiedener Set-Operationen verwendet werden.
Um die Verbindung zwischen zwei Mengen zu berechnen, können wir den Methodenaufruf addAll() verwenden. Zum Beispiel
import java.util.HashSet; class Main { public static void main(String[] args) { HashSet<Integer> evenNumbers = new HashSet<>(); evenNumbers.add(2); evenNumbers.add(4); System.out.println("HashSet1: " + System.out.println("Gemeinsamkeit: " HashSet<Integer> numbers = new HashSet<>(); numbers.add(1); numbers.add(3); System.out.println("HashSet2: " + numbers); //Mengenverbindung numbers.addAll(evenNumbers); System.out.println("Verbindung ist: " + numbers); } }
Ausgaberesultat
HashSet1: [2, 4] HashSet2: [1, 3] Verbindung ist: [1, 2, 3, 4]
Um die Gemeinsamkeit zwischen zwei Mengen zu berechnen, können wir den Methodenaufruf retainAll() verwenden. Zum Beispiel
import java.util.HashSet; class Main { public static void main(String[] args) { HashSet<Integer> primeNumbers = new HashSet<>(); primeNumbers.add(2); primeNumbers.add(3); System.out.println("HashSet1: " + primeNumbers); HashSet<Integer> evenNumbers = new HashSet<>(); evenNumbers.add(2); evenNumbers.add(4); System.out.println("HashSet2: " + System.out.println("Gemeinsamkeit: " //Gemeinsamkeit einer Sammlung evenNumbers.retainAll(primeNumbers); evenNumbers); + System.out.println("Gemeinsamkeit: " } }
Ausgaberesultat
HashSet1: [2, 3] HashSet2: [2, 4] Gemeinsamkeit: [2]
Um die Differenz zwischen zwei Mengen zu berechnen, können wir den Methodenaufruf removeAll() verwenden. Zum Beispiel,
import java.util.HashSet; class Main { public static void main(String[] args) { HashSet<Integer> primeNumbers = new HashSet<>(); primeNumbers.add(2); primeNumbers.add(3); primeNumbers.add(5); System.out.println("HashSet1: " + primeNumbers); HashSet<Integer> oddNumbers = new HashSet<>(); oddNumbers.add(1); oddNumbers.add(3); oddNumbers.add(5); System.out.println("HashSet2: " + oddNumbers); //HashSet1und HashSet2zwischen den beiden Mengen primeNumbers.removeAll(oddNumbers); System.out.println("Differenz: " + primeNumbers); } }
Ausgaberesultat
HashSet1: [2, 3, 5] HashSet2: [1, 3, 5] Differenz: [2]
Um zu überprüfen, ob eine Sammlung eine Teilmenge einer anderen Sammlung ist, können wir den Methodenaufruf containsAll() verwenden. Zum Beispiel,
import java.util.HashSet; class Main { public static void main(String[] args) { HashSet<Integer> numbers = new HashSet<>(); numbers.add(1); numbers.add(2); numbers.add(3); numbers.add(4); System.out.println("HashSet1: " + numbers); HashSet<Integer> primeNumbers = new HashSet<>(); primeNumbers.add(2); primeNumbers.add(3); System.out.println("HashSet2: " + primeNumbers); //Überprüfen Sie, ob primeNumbers eine Teilmenge von numbers ist boolean result = numbers.containsAll(primeNumbers); System.out.println("HashSet2Ist HashSet1ist das eine Teilmenge? " + result); } }
Ausgaberesultat
HashSet1: [1, 2, 3, 4] HashSet2: [2, 3] HashSet2Ist HashSet1Ist ein Untergruppe? true
Methode | Beschreibung |
---|---|
clone() | Kopie des HashSet erstellen |
contains() | In HashSet gesuchtes Element suchen und einen booleschen Wert zurückgeben |
isEmpty() | Prüfen, ob HashSet leer ist |
size() | Größe des HashSet zurückgeben |
clear() | Alle Elemente aus HashSet löschen |
In Java verwenden wir normalerweise HashSet, wenn wir zufälligen Zugriff auf Elemente benötigen, weil die Elemente im Hash-Tabelle über den hashcode erreicht werden.
Der hashcode ist eine eindeutige Identifikation, die hilft, die Elemente im Hash-Tabelle zu identifizieren.
HashSet kann keine wiederholten Elemente enthalten. Daher hat jeder Element der Hash-Sammelstelle einen einzigartigen hashcode.
Hinweis: HashSet ist nicht synchronisiert. Das bedeutet, wenn mehrere Threads gleichzeitig auf die Hash-Sammelstelle zugreifen und einer der Threads die Hash-Sammelstelle ändert, muss sie extern synchronisiert werden.