Java HashMap
HashMap ist eine Hash-Tabelle, die Schlüssel-Wert-Zuordnungen speichert.
HashMap implementiert das Map-Interface, speichert Daten basierend auf dem HashCode-Wert des Schlüssels, hat eine sehr schnelle Zugriffsgeschwindigkeit, erlaubt höchstens einen Datensatz mit einem null-Schlüssel und unterstützt keine Thread-Synchronisation.
HashMap ist ungeordnet, das heißt, es wird die Einfügereihenfolge nicht gespeichert.
HashMap erbt von AbstractMap und implementiert die Interfaces Map, Cloneable und java.io.Serializable.

Die Schlüssel- und Werttypen von HashMap können gleich oder unterschiedlich sein. Sie können String-Schlüssel und String-Werte oder Integer-Schlüssel und String-Werte sein.
Die Elemente in HashMap sind tatsächlich Objekte. Für einige gängige Basistypen können deren Wrapper-Klassen verwendet werden.
Die Tabelle der Wrapper-Klassen, die den Basistypen entsprechen, lautet wie folgt:
| Basistyp | Referenztyp |
|---|---|
| boolesch | Boolean |
| Byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| char | Zeichen |
Die Klasse HashMap befindet sich im Paket java.util. Sie muss vor der Verwendung importiert werden. Die Syntax lautet wie folgt:
import java.util.HashMap; // 引入 HashMap 类
Im folgenden Beispiel erstellen wir ein HashMap-Objekt Sites mit Integer-Schlüsseln und String-Werten:
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
Elemente hinzufügen
Die Klasse HashMap bietet viele nützliche Methoden. Sie können die Methode put() verwenden, um Schlüssel-Wert-Paare hinzuzufügen:
Beispiel
import java.util.HashMap;
public class ExampleTest {
public static void main(String[] args) {
// HashMap-Objekt Sites erstellen
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
// Schlüssel-Wert-Paare hinzufügen
Sites.put(1, "Google");
Sites.put(2, "Example");
Sites.put(3, "Taobao");
Sites.put(4, "Zhihu");
System.out.println(Sites);
}
}
Das Ausführen des obigen Codes erzeugt die folgende Ausgabe:
{1=Google, 2=Example, 3=Taobao, 4=Zhihu}
Das folgende Beispiel erstellt eine HashMap mit String-Schlüsseln und String-Werten:
Beispiel
import java.util.HashMap;
public class ExampleTest {
public static void main(String[] args) {
// HashMap-Objekt Sites erstellen
HashMap<String, String> Sites = new HashMap<String, String>();
// Schlüssel-Wert-Paare hinzufügen
Sites.put("one", "Google");
Sites.put("two", "Example");
Sites.put("three", "Taobao");
Sites.put("four", "Zhihu");
System.out.println(Sites);
}
}
Das Ausführen des obigen Codes erzeugt die folgende Ausgabe:
{four=Zhihu, one=Google, two=Example, three=Taobao}
Zugriff auf Elemente
Wir können die Methode get(key) verwenden, um den Wert abzurufen, der dem Schlüssel entspricht:
Beispiel
import java.util.HashMap;
public class ExampleTest {
public static void main(String[] args) {
// HashMap-Objekt Sites erstellen
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
// Schlüssel-Wert-Paare hinzufügen
Sites.put(1, "Google");
Sites.put(2, "Example");
Sites.put(3, "Taobao");
Sites.put(4, "Zhihu");
System.out.println(Sites.get(3));
}
}
Das Ausführen des obigen Codes erzeugt die folgende Ausgabe:
Taobao
Elemente löschen
Wir können die Methode remove(key) verwenden, um das zum Schlüssel gehörende Schlüssel-Wert-Paar zu löschen:
Beispiel
import java.util.HashMap;
public class ExampleTest {
public static void main(String[] args) {
// HashMap-Objekt Sites erstellen
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
// Schlüssel-Wert-Paare hinzufügen
Sites.put(1, "Google");
Sites.put(2, "Example");
Sites.put(3, "Taobao");
Sites.put(4, "Zhihu");
Sites.remove(4);
System.out.println(Sites);
}
}
Das Ausführen des obigen Codes erzeugt die folgende Ausgabe:
{1=Google, 2=Example, 3=Taobao}
Um alle Schlüssel-Wert-Paare zu löschen, können Sie die Methode clear verwenden:
Beispiel
import java.util.HashMap;
public class ExampleTest {
public static void main(String[] args) {
// HashMap-Objekt Sites erstellen
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
// Schlüssel-Wert-Paare hinzufügen
Sites.put(1, "Google");
Sites.put(2, "Example");
Sites.put(3, "Taobao");
Sites.put(4, "Zhihu");
Sites.clear();
System.out.println(Sites);
}
}
Das Ausführen des obigen Codes erzeugt die folgende Ausgabe:
{}
Größe berechnen
Um die Anzahl der Elemente in einer HashMap zu berechnen, kannst du die Methode size() verwenden:
Beispiel
import java.util.HashMap;
public class ExampleTest {
public static void main(String[] args) {
// HashMap-Objekt Sites erstellen
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
// Schlüssel-Wert-Paare hinzufügen
Sites.put(1, "Google");
Sites.put(2, "Example");
Sites.put(3, "Taobao");
Sites.put(4, "Zhihu");
System.out.println(Sites.size());
}
}
Das Ausführen des obigen Codes erzeugt die folgende Ausgabe:
4
HashMap iterieren
Du kannst for-each verwenden, um über die Elemente in einer HashMap zu iterieren.
Wenn du nur die Schlüssel abrufen möchtest, kannst du die Methode keySet() verwenden und dann den entsprechenden Wert über get(key) abrufen. Wenn du nur die Werte abrufen möchtest, kannst du die Methode values() verwenden.
Beispiel
import java.util.HashMap;
public class ExampleTest {
public static void main(String[] args) {
// HashMap-Objekt Sites erstellen
HashMap<Integer, String> Sites = new HashMap<Integer, String>();
// Schlüssel-Wert-Paare hinzufügen
Sites.put(1, "Google");
Sites.put(2, "Example");
Sites.put(3, "Taobao");
Sites.put(4, "Zhihu");
// Schlüssel und Wert ausgeben
for (Integer i : Sites.keySet()) {
System.out.println("key: " + i + " value: " + Sites.get(i));
}
// Alle Werte zurückgeben
for(String value: Sites.values()) {
// Jeden Wert ausgeben
System.out.print(value + ", ");
}
}
}
Das Ausführen des obigen Codes erzeugt die folgende Ausgabe:
key: 1 value: Google key: 2 value: Example key: 3 value: Taobao key: 4 value: Zhihu Google, Example, Taobao, Zhihu,
Java HashMap-Methoden
hashmapDie Liste der häufig verwendeten Java HashMap-Methoden lautet wie folgt:
| Methode | Beschreibung |
|---|---|
| clear() | Löscht alle Schlüssel/Wert-Paare in der hashMap |
| clone() | Kopiert eine hashMap |
| isEmpty() | Ermittelt, ob die hashMap leer ist |
| size() | Berechnet die Anzahl der Schlüssel/Wert-Paare in der hashMap |
| put() | Fügt Schlüssel/Wert-Paare zur hashMap hinzu |
| putAll() | Fügt alle Schlüssel/Wert-Paare zur hashMap hinzu |
| putIfAbsent() | Wenn der angegebene Schlüssel nicht in der hashMap vorhanden ist, fügt das angegebene Schlüssel/Wert-Paar in die hashMap ein. |
| remove() | Löscht die Zuordnung des angegebenen Schlüssels in der hashMap |
| containsKey() | Prüft, ob eine Zuordnung für den angegebenen Schlüssel in der hashMap vorhanden ist. |
| containsValue() | Prüft, ob eine Zuordnung für den angegebenen Wert in der hashMap vorhanden ist. |
| replace() | Ersetzt den Wert, der dem angegebenen Schlüssel in der hashMap entspricht. |
| replaceAll() | Ersetzt alle Zuordnungen in der hashMap durch das Ergebnis der Ausführung der angegebenen Funktion. |
| get() | Ruft den Wert ab, der dem angegebenen Schlüssel entspricht |
| getOrDefault() | Ruft den Wert ab, der dem angegebenen Schlüssel entspricht, und gibt den festgelegten Standardwert zurück, wenn der Schlüssel nicht gefunden wird. |
| forEach() | Führt die angegebene Operation für jede Zuordnung in der hashMap aus. |
| entrySet() | Gibt eine Set-Ansicht aller Zuordnungen in der hashMap zurück. |
| keySet() | Gibt eine Set-Ansicht aller Schlüssel in der hashMap zurück. |
| values() | Gibt alle in der hashMap vorhandenen Werte zurück. |
| merge() | Fügt der hashMap Schlüssel-Wert-Paare hinzu |
| compute() | Berechnet den Wert für den angegebenen Schlüssel in der hashMap neu |
| computeIfAbsent() | Berechnet den Wert für den angegebenen Schlüssel in der HashMap neu und fügt ihn der HashMap hinzu, wenn der Schlüssel nicht vorhanden ist |
| computeIfPresent() | Berechnet den Wert für den angegebenen Schlüssel in der HashMap neu, sofern der Schlüssel in der HashMap vorhanden ist. |
Für weitere API-Methoden siehe:https://www.example.com/manual/jdk11api/java.base/java/util/HashMap.html
Weitere Erweiterungen
Java Collections Framework