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!

Java - HashMap

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 und V 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:

  1. HashMap(): Erstellt eine leere HashMap mit Standardkapazität und Lastfaktor.
  2. HashMap(int initialCapacity): Erstellt eine leere HashMap mit der angegebenen Anfangskapazität und Standardlastfaktor.
  3. HashMap(int initialCapacity, float loadFactor): Erstellt eine leere HashMap mit der angegebenen Anfangskapazität und Lastfaktor.
  4. 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:

  1. Wir haben eine neue HashMap namens scientistAges erstellt.
  2. Wir haben drei Schlüssel-Wert-Paare hinzugefügt: Namen von Wissenschaftlern und ihre Alter.
  3. Wir haben das Alter von Einstein mit der Methode get() abgerufen.
  4. Wir haben überprüft, ob wir das Alter von Hawking mit containsKey() hatten. Wir hatten es nicht, daher wurde die "nicht haben" Nachricht gedruckt.
  5. Wir haben die Anzahl der Wissenschaftler in unserer Kartei mit size() gedruckt.
  6. Wir haben Newton aus der Kartei mit remove() entfernt.
  7. 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