Java HashMap: Ihre Schlüssel zu effizienter Daten Speicherung und Abruf
Einführung
Hallo daar, Hoffnungsvolle Java-Programmierer! Heute werden wir eine aufregende Reise in die Welt der Java HashMaps antreten. Lassen Sie sich nicht von diesem eleganten Namen abschrecken. Stellen Sie sich eine HashMap als einen super-klugen Aktenschrank für Ihre Daten vor. Es ist wie einen persönlichen Assistenten zu haben, der sofort jede Information finden kann, die Sie benötigen!
Als ich zum ersten Mal von HashMaps erfuhr, stellte ich mir vor, sie wären eine magische Bibliothek, in der Bücher (unsere Daten) von den Regalen fliegen könnten und in unsere Hände kämen, sobald wir danach fragen. Das ist ziemlich das, was HashMaps tun, aber mit Computerdaten anstelle von Büchern. Cool, nicht wahr?
Tauchen wir ein und lüften wir die Geheimnisse dieser mächtigen Java-Klasse auf!
Klassendeklaration
In Java wird die HashMap-Klasse wie folgt deklariert:
public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable
Wow! Das ist ein langer, nicht? Keine Sorge, wenn es so aussieht, als ob es Alphabet-Suppe wäre. Lassen Sie uns es aufbrechen:
-
public class HashMap<K,V>
: Dies bedeutet, dass HashMap eine öffentliche Klasse ist (jeder kann sie verwenden) und zwei Typparameter verwendet,K
für den Schlüsseltyp undV
für den Wertetyp. -
extends AbstractMap<K,V>
: HashMap baut auf einer anderen Klasse namens AbstractMap auf. -
implements Map<K,V>, Cloneable, Serializable
: Diese sind Schnittstellen, die HashMap implementiert und ihr zusätzliche Superkräfte verleiht!
Parameter
Erinnern Sie sich an unsere magische Bibliothek-Analogie? Na ja, in dieser Bibliothek hat jedes Buch (Wert) eine eindeutige Signatur (Schlüssel). In HashMap-Begriffen:
-
K
: Der Typ der Schlüssel, die von dieser Kartei verwaltet werden -
V
: Der Typ der zugeordneten Werte
Wenn Sie beispielsweise die Alter von Menschen speichern möchten, könnten Sie String
für die Namen (Schlüssel) und Integer
für die Alter (Werte) verwenden.
Klassenkonstruktoren
HashMaps kommen mit vier verschiedenen Konstruktoren. Stellen Sie sich diese als verschiedene Wege vor, um unsere magische Bibliothek zu bauen:
-
HashMap()
: Erstellt eine leere HashMap mit Standardkapazität und Lastfaktor. -
HashMap(int initialCapacity)
: Erstellt eine leere HashMap mit der angegebenen Anfangskapazität und Standardlastfaktor. -
HashMap(int initialCapacity, float loadFactor)
: Erstellt eine leere HashMap mit der angegebenen Anfangskapazität und Lastfaktor. -
HashMap(Map<? extends K, ? extends V> m)
: Erstellt eine neue HashMap mit denselben Zuordnungen wie die angegebene Kartei.
Keine Sorge zu viel über Kapazität und Lastfaktor jetzt. Wissen Sie nur, dass sie beeinflussen, wie effizient unsere HashMap hinter den Kulissen arbeitet.
Klassenmethoden
Nun schauen wir uns einige der coolen Dinge, die unsere HashMap können. Ich werde Ihnen die am häufigsten verwendeten Methoden zeigen:
Methode | Beschreibung |
---|---|
put(K key, V value) |
Fügt ein Schlüssel-Wert-Paar zur Kartei hinzu |
get(Object key) |
Ruft den Wert ab, der dem angegebenen Schlüssel zugeordnet ist |
remove(Object key) |
Entfernt die Zuordnung für den angegebenen Schlüssel |
clear() |
Entfernt alle Zuordnungen aus der Kartei |
size() |
Gibt die Anzahl der Schlüssel-Wert-Zuordnungen in der Kartei zurück |
isEmpty() |
Gibt true zurück, wenn die Kartei keine Zuordnungen enthält |
containsKey(Object key) |
Gibt true zurück, wenn die Kartei den angegebenen Schlüssel enthält |
containsValue(Object value) |
Gibt true zurück, wenn die Kartei den angegebenen Wert enthält |
Vererbte Methoden
HashMap vererbt auch Methoden von ihren Elternklassen und Schnittstellen. Es ist wie unsere magische Bibliothek hat einige Tricks von älteren, weiseren Bibliotheken geerbt! Hier sind einige Beispiele:
- Von
java.util.AbstractMap
:equals()
,hashCode()
,toString()
- Von
java.util.Map
:putAll()
,entrySet()
,keySet()
,values()
Beispiel
Lassen Sie uns unsere neu erlangte Kenntnis mit einem einfachen Beispiel in die Praxis umsetzen. Wir erstellen eine HashMap, um das Alter einiger berühmter Wissenschaftler zu speichern:
import java.util.HashMap;
public class ScientistAges {
public static void main(String[] args) {
// Erstellen Sie eine neue HashMap
HashMap<String, Integer> scientistAges = new HashMap<>();
// Fügen Sie einige Schlüssel-Wert-Paare hinzu
scientistAges.put("Albert Einstein", 76);
scientistAges.put("Isaac Newton", 84);
scientistAges.put("Marie Curie", 66);
// Abrufen und Drucken eines Wertes
System.out.println("Alter von Albert Einstein: " + scientistAges.get("Albert Einstein"));
// Überprüfen, ob ein Schlüssel existiert
if (scientistAges.containsKey("Stephen Hawking")) {
System.out.println("Wir haben das Alter von Stephen Hawking.");
} else {
System.out.println("Wir haben nicht das Alter von Stephen Hawking.");
}
// Drucken Sie die Größe der HashMap
System.out.println("Anzahl der Wissenschaftler: " + scientistAges.size());
// Entfernen Sie ein Schlüssel-Wert-Paar
scientistAges.remove("Isaac Newton");
// Drucken Sie alle Schlüssel-Wert-Paare
for (String name : scientistAges.keySet()) {
System.out.println(name + " ist " + scientistAges.get(name) + " Jahre alt geworden.");
}
}
}
Ausgabe
Wenn wir diesen Code ausführen, sehen wir das Folgende:
Alter von Albert Einstein: 76
Wir haben nicht das Alter von Stephen Hawking.
Anzahl der Wissenschaftler: 3
Albert Einstein ist 76 Jahre alt geworden.
Marie Curie ist 66 Jahre alt geworden.
Lassen Sie uns aufbrechen, was passiert ist:
- Wir haben eine neue HashMap namens
scientistAges
erstellt. - Wir haben drei Schlüssel-Wert-Paare hinzugefügt: Namen von Wissenschaftlern und ihre Alter.
- Wir haben das Alter von Einstein mit der Methode
get()
abgerufen. - Wir haben überprüft, ob wir das Alter von Hawking mit
containsKey()
hatten. Wir hatten es nicht, daher wurde die "nicht haben" Nachricht gedruckt. - Wir haben die Anzahl der Wissenschaftler in unserer Kartei mit
size()
gedruckt. - Wir haben Newton aus der Kartei mit
remove()
entfernt. - Schließlich haben wir einen for-each-Schleifen verwendet, um über alle verbleibenden Schlüssel-Wert-Paare zu iterieren und sie zu drucken.
Und so ist es! Sie haben gerade Ihre ersten Schritte in die Welt der Java HashMaps gemacht. Erinnern Sie sich, Übung macht den Meister. Versuchen Sie, Ihre eigenen HashMaps mit verschiedenen Arten von Daten zu erstellen. Vielleicht machen Sie eine Kartei Ihrer Lieblingsbücher und ihrer Autoren oder Ihrer Freunde und deren Telefonnummern.
HashMaps sind in der realen Weltprogrammierung unglaublich nützlich. Sie sind wie das Schweizer Army-Messer der Datenstrukturen – vielseitig, effizient und immer griffbereit. Fortsetzen Sie Ihre Erforschung, programmieren Sie weiter, und bevor Sie es wissen, sind Sie ein HashMap-Meister!
Credits: Image by storyset