English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java Grund教程

Java Prozesssteuerung

Java Array

Java objektorientiert(I)

Java objektorientiert(II)

Java objektorientiert(III)

Java Ausnahmebehandlung

Java Liste(List)

Java Queue(队列)

Java Map-Sammel

Java Set-Sammel

Java Eingabe-Ausgabe(I/O)

Java Reader/Writer

Java andere Themen

Java HashSet Klasse

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.

Erstellen eines Hash-Sets

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

Methoden der HashSet

Die HashSet-Klasse bietet verschiedene Methoden, die es uns ermöglichen, verschiedene Operationen auf die Sammlung auszuführen.

Fügen Sie das Element in den HashSet ein

  • 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]

Besuchen Sie die HashSet-Elemente

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,

Entfernen Sie das Element

  • 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

Set-Operationsmethoden

Die verschiedenen Methoden der HashSet-Klasse können auch zur Ausführung verschiedener Set-Operationen verwendet werden.

Mengenverbindung einer Set-Sammlung

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]

Gemeinsamkeit einer Set-Sammlung

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]

Differenz einer Set-Sammlung

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]

Teilmenge einer Set-Sammlung

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

Andere Methoden von HashSet

MethodeBeschreibung
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

Warum HashSet wählen?

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.