Java HashSet

Java 集合框架Java Collections Framework

HashSet ist auf Basis von HashMap implementiert und ist eine Sammlung, die keine doppelten Elemente zulässt.

HashSet erlaubt null-Werte.

HashSet ist ungeordnet, was bedeutet, dass es die Einfügereihenfolge nicht aufzeichnet.

HashSet ist nicht threadsicher. Wenn mehrere Threads gleichzeitig versuchen, ein HashSet zu ändern, ist das Endergebnis ungewiss. Sie müssen den gleichzeitigen Zugriff auf das HashSet explizit synchronisieren, wenn von mehreren Threads darauf zugegriffen wird.

HashSet implementiert die Set-Schnittstelle.

Die Elemente in einem HashSet sind tatsächlich Objekte. Einige gängige Basistypen können ihre Wrapper-Klassen verwenden.

Die Wrapper-Klassen, die den Basistypen entsprechen, sind wie folgt:

BasistypReferenztyp
booleschBoolean
ByteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charZeichen

Die Klasse HashSet befindet sich im Paket java.util. Sie müssen sie vor der Verwendung importieren. Das Syntaxformat ist wie folgt:

import java.util.HashSet; // 引入 HashSet 类

Im folgenden Beispiel erstellen wir ein HashSet-Objekt sites, um String-Elemente zu speichern:

HashSet<String> sites = new HashSet<String>();

Elemente hinzufügen

Die Klasse HashSet bietet viele nützliche Methoden. Sie können die Methode add() verwenden, um Elemente hinzuzufügen:

Beispiel

// HashSet-Klasse importieren
import java.util.HashSet;

public class ExampleTest {
    public static void main(String[] args) {
    HashSet<String> sites = new HashSet<String>();
        sites.add("Google");
        sites.add("Example");
        sites.add("Taobao");
        sites.add("Zhihu");
        sites.add("Example");  // Doppelte Elemente werden nicht hinzugefügt
        System.out.println(sites);
    }
}

Führen Sie den obigen Code aus; das Ausgabeergebnis ist wie folgt:

[Google, Example, Zhihu, Taobao]

Im obigen Beispiel wurde Example zweimal hinzugefügt, aber es erscheint nur einmal in der Sammlung, weil jedes Element in der Sammlung eindeutig sein muss.

Prüfen, ob ein Element existiert

Wir können die Methode contains() verwenden, um festzustellen, ob ein Element in der Sammlung existiert:

Beispiel

// HashSet-Klasse importieren
import java.util.HashSet;

public class ExampleTest {
    public static void main(String[] args) {
    HashSet<String> sites = new HashSet<String>();
        sites.add("Google");
        sites.add("Example");
        sites.add("Taobao");
        sites.add("Zhihu");
        sites.add("Example");  // Doppelte Elemente werden nicht hinzugefügt
        System.out.println(sites.contains("Taobao"));
    }
}

Führen Sie den obigen Code aus; das Ausgabeergebnis ist wie folgt:

true

Elemente löschen

Wir können die Methode remove() verwenden, um Elemente aus der Sammlung zu löschen:

Beispiel

// HashSet-Klasse importieren
import java.util.HashSet;

public class ExampleTest {
    public static void main(String[] args) {
    HashSet<String> sites = new HashSet<String>();
        sites.add("Google");
        sites.add("Example");
        sites.add("Taobao");
        sites.add("Zhihu");
        sites.add("Example");     // Doppelte Elemente werden nicht hinzugefügt
        sites.remove("Taobao");  // Element löschen; gibt true zurück, wenn das Löschen erfolgreich ist, andernfalls false
        System.out.println(sites);
    }
}

Führen Sie den obigen Code aus; das Ausgabeergebnis ist wie folgt:

[Google, Example, Zhihu]

Um alle Elemente in der Sammlung zu löschen, können Sie die Methode clear verwenden:

Beispiel

// HashSet-Klasse importieren
import java.util.HashSet;

public class ExampleTest {
    public static void main(String[] args) {
    HashSet<String> sites = new HashSet<String>();
        sites.add("Google");
        sites.add("Example");
        sites.add("Taobao");
        sites.add("Zhihu");
        sites.add("Example");     // Doppelte Elemente werden nicht hinzugefügt
        sites.clear();  
        System.out.println(sites);
    }
}

Führen Sie den obigen Code aus; das Ausgabeergebnis ist wie folgt:

[]

Größe berechnen

Um die Anzahl der Elemente in einem HashSet zu berechnen, können Sie die Methode size() verwenden:

Beispiel

// HashSet-Klasse importieren
import java.util.HashSet;

public class ExampleTest {
    public static void main(String[] args) {
    HashSet<String> sites = new HashSet<String>();
        sites.add("Google");
        sites.add("Example");
        sites.add("Taobao");
        sites.add("Zhihu");
        sites.add("Example");     // Doppelte Elemente werden nicht hinzugefügt
        System.out.println(sites.size());  
    }
}

Führen Sie den obigen Code aus; das Ausgabeergebnis ist wie folgt:

4

HashSet iterieren

Sie können for-each verwenden, um über die Elemente in einem HashSet zu iterieren.

Beispiel

// HashSet-Klasse importieren
import java.util.HashSet;

public class ExampleTest {
    public static void main(String[] args) {
    HashSet<String> sites = new HashSet<String>();
        sites.add("Google");
        sites.add("Example");
        sites.add("Taobao");
        sites.add("Zhihu");
        sites.add("Example");     // Doppelte Elemente werden nicht hinzugefügt
        for (String i : sites) {
            System.out.println(i);
        }
    }
}

Führen Sie den obigen Code aus; das Ausgabeergebnis ist wie folgt:

Google
Example
Zhihu
Taobao

Häufige Methoden von HashSet

Methode Rückgabewert Beschreibung Beispiel
add(E e) boolean Element zur Sammlung hinzufügen; gibt bei Erfolg true zurücktrue; gibt false für doppelte Elemente zurückfalse。 set.add("Java");
remove(Object o) boolean Löscht das angegebene Element; gibt bei Erfolg true zurücktrue; gibt false zurück, wenn das Element nicht existiertfalse。 set.remove("Python");
contains(Object o) boolean Prüft, ob die Sammlung das angegebene Element enthält. if (set.contains("Java")) { ... }
size() int Gibt die Anzahl der Elemente in der Sammlung zurück. int count = set.size();
isEmpty() boolean Ermittelt, ob die Sammlung leer ist. if (set.isEmpty()) { ... }
clear() void Entfernt alle Elemente aus der Sammlung. set.clear();
iterator() Iterator<E> Gibt einen Iterator für die Sammlung zurück, um Elemente zu durchlaufen. for (String s : set) { ... }
toArray() Object[] Konvertiert die Sammlung in ein Array. Object[] arr = set.toArray();
toArray(T[] a) T[] Konvertiert die Sammlung in ein Array des angegebenen Typs. String[] arr = set.toArray(new String[0]);
addAll(Collection<? extends E> c) boolean Fügt alle Elemente einer anderen Sammlung hinzu (Vereinigungsoperation). set.addAll(Arrays.asList("A", "B"));
retainAll(Collection<?> c) boolean Behält nur die mit der angegebenen Sammlung gemeinsamen Elemente (Schnittmengenoperation). set.retainAll(otherSet);
removeAll(Collection<?> c) boolean Entfernt Elemente, die mit der angegebenen Sammlung gemeinsam sind (Differenzoperation). set.removeAll(otherSet);

Weitere API-Methoden finden Sie unter:https://www.example.com/manual/jdk11api/java.base/java/util/HashSet.html

Java 集合框架Java Collections Framework

Weitere Erweiterungen