Java HashSet
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:
| Basistyp | Referenztyp |
|---|---|
| boolesch | Boolean |
| Byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| char | Zeichen |
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
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
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
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
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
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
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
Weitere Erweiterungen
Java Collections Framework