HashMap in Java
Lege eine HashMap<String, String> namens scores an, rufe scores.put("oak", "leaf"); auf und gib dann scores.get("oak") aus. Kompiliere Desk.java und starte java Desk. Der Bildschirm soll eine Zeile zeigen: leaf. Der Schlüssel "oak" findet den Wert "leaf". Ein Paar speichern und mit demselben Schlüssel zurücklesen — das lehrt diese Seite.
Ein Schlüssel findet einen Wert
Auf der list-methods-Seite hast du Werte über die Slot-Nummer erreicht: get(0). Eine HashMap erreicht einen Wert über einen Schlüssel, den du wählst. Du schreibst das Paar mit put. Du liest den Wert mit get und demselben Schlüssel. Für den Lehrpfad dieser Seite gibt es keinen Slot null — der Schlüssel ist die Marke.
Öffne Desk.java. Behalte den öffentlichen Klassennamen Desk, damit er zum Dateinamen passt. Lösche übrig gebliebene ArrayList-Zeilen, tags.get(0), tags.size(), tags.remove(0) und jedes Rack- oder Shelf-Demo. Die gehören zu den Listen-Seiten. Lösche auch jedes Scanner, nextLine oder Tastaturlesen. Das Programm darf nicht auf Eingabe warten.
Schreibe nahe oben, oberhalb von public class Desk:
import java.util.HashMap;
Dieser Import bringt den Typ HashMap unter dem Kurznamen in Reichweite. Ohne ihn sieht javac auf dieser Seite den Kurznamen HashMap nicht. Schreibe java.util und HashMap sorgfältig. Erfinde hier kein import java.util.*; als Pflicht — ein genauer Import reicht.
Lege in main die Map an:
HashMap<String, String> scores = new HashMap<String, String>();
Der erste Typ in den spitzen Klammern ist die Schlüsselart. Der zweite ist die Werteart. Beide sind auf dieser Seite String, damit die Demo bei Wörtern bleibt. Der Name scores ist der Name, den du in der Unterrichtsdatei behältst. Der Aufruf new HashMap<String, String>() baut eine leere Map. In diesem Moment hält sie keine Paare.
oak zu leaf legen, dann oak lesen
Rufe scores.put("oak", "leaf"); in einer eigenen Zeile auf. Das erste zitierte Wort ist der Schlüssel. Das zweite zitierte Wort ist der Wert. Die Reihenfolge in put zählt: Schlüssel zuerst, Wert danach. Vertausche sie in der Datei, die du behältst, nicht.
Schreibe dann:
System.out.println(scores.get("oak"));
Gib denselben Schlüssel "oak" an get weiter. Gib für die behaltene Datei nicht "leaf" als get-Argument — get fragt nach dem Schlüssel, nicht nach dem Wert. Schreibe kein scores.get(0) — das ist die Listenform von Rack, nicht die Map-Form hier. Speichere vor dem Kompilieren.
import java.util.HashMap;
public class Desk {
public static void main(String[] args) {
HashMap<String, String> scores = new HashMap<String, String>();
scores.put("oak", "leaf");
System.out.println(scores.get("oak"));
}
}
Aus dem Ordner mit Desk.java führe javac Desk.java aus. Wenn Klammern, geschweifte Klammern, spitze Klammern und Semikolons passen, schreibt javac keine eigene Zeile. Starte dann java Desk — nicht java Desk.java und nicht java HashMap. Lass die Endung .java beim Laufbefehl weg. Starte die Klasse, die main enthält.
Das Programm soll eine Zeile drucken und stoppen: leaf. Es soll dich nicht tippen lassen. Wenn das Terminal auf Tastatureingabe wartet, steckt noch ein nextLine-Aufruf aus einer älteren Übung in einer Datei. Lösche diesen Aufruf und behalte die HashMap-Anlage, die put-Zeile und System.out.println(scores.get("oak"));.
Geh den Lauf einmal durch. Java startet bei Desk.main. Der Import hat bereits benannt, welches HashMap du meinst. Die new-Zeile baut eine leere Map. put speichert das Paar oak → leaf. Der Aufruf get("oak") liefert leaf. Die Druckzeile schreibt dieses Wort. Der Bildschirm zeigt leaf. Nichts anderes soll erscheinen. Siehst du oak, hast du den Schlüssel von Hand gedruckt oder das falsche get-Argument benutzt. Siehst du 2 oder [pine], läuft noch ein Rack-size- oder remove-Demo — wechsle zu java Desk.
Wenn javac sagt, es finde HashMap nicht, fehlt die Import-Zeile, ist falsch geschrieben oder steht nach public class Desk. Verschiebe import java.util.HashMap; über die Klassenzeile. Rufst du get("oak") vor jedem put auf, kann der Druck null zeigen, weil dieser Schlüssel nie gespeichert wurde. Behalte auf dieser Seite put vor get. Schreibst du scores.put(oak, leaf); ohne Anführungszeichen, behandelt javac die Wörter als Namen, die nicht existieren. Behalte die Anführungszeichen um Schlüssel und Wert.
Gesamte Map drucken als zweiten Blick
Eine zweite Desk-Datei druckt das Map-Objekt nach demselben put. Das zeigt die Paarform, die Java nutzt, wenn du die Map selbst ausgibst.
import java.util.HashMap;
public class Desk {
public static void main(String[] args) {
HashMap<String, String> scores = new HashMap<String, String>();
scores.put("oak", "leaf");
System.out.println(scores);
}
}
Kompiliere und starte diese zweite Datei auf dieselbe Weise. Der Bildschirm zeigt {oak=leaf} — Schlüssel, Gleichheitszeichen, Wert, in geschweiften Klammern. Diese Form hilft zu bestätigen, dass das Paar in der Map steckt. Der Lehrpfad für den Quiz-Bildschirm leaf bleibt die erste Datei mit get("oak"). Nutze den Ganz-Map-Druck nur, um das gespeicherte Paar zu sehen. Mische get(0) in keine der Desk-Dateien — Maps nutzen auf dieser Seite keine Listen-Slotnummern.
Zeigt der Bildschirm [] oder [oak, pine], läuft noch ein ArrayList-Demo. Bleib bei HashMap und java Desk.
Vergleich mit Listen-get und mit put
Auf der list-methods-Seite brauchte get(0) nach add einen Slot-Index. Auf dieser Seite braucht get("oak") nach put den Schlüsselstring. Eine übrig gebliebene Rack-Datei, die nur tags.get(0) druckt, ist eine andere Lektion. Für diese Seite behalte in Desk die Aufrufe put("oak", "leaf") und get("oak").
Du kannst mit weiteren put-Aufrufen mehr Paare speichern. Diese Seite behält ein Paar, damit Schlüssel und gedruckter Wert leicht zu sehen bleiben. Eine spätere Seite — HashSet — speichert einzigartige Werte ohne eine separate Schlüssel-Wert-Paar-Geschichte. Bleib hier bei HashMap put und get.
Wenn alte Rack.java- oder Shelf.java-Dateien noch in der Nähe liegen, lass sie liegen oder lösche sie nur, wenn sie verwirren, welche Klasse du startest. Starte java Desk, nachdem du die HashMap-Datei dieser Lektion kompiliert hast.
Was für HashSet bleibt
Diese Seite öffnet Schlüssel-Wert-Speicherung mit HashMap. Die nächste Seite öffnet eine Menge einzigartiger Werte mit HashSet. Bleib hier bei put und get auf der Map. Erfinde set-add nicht als Pflicht auf dieser Seite; das Lernziel ist der Schlüssel, der den Wert findet, und der Bildschirm leaf.
Vor HashSet
Du kannst java.util.HashMap importieren, HashMap<String, String> scores anlegen, scores.put("oak", "leaf"); aufrufen und dann scores.get("oak") ausgeben. Kompiliere Desk.java und starte java Desk. Der Bildschirm zeigt leaf. Der Schlüssel hat den Wert gefunden. Die nächste Seite ist HashSet, wo du einzigartige Werte speicherst, ohne jedes mit einem eigenen Schlüssel auf dem Pfad jener Lektion zu koppeln.
Behalte den Import über der Klasse. Behalte put vor get. Behalte den Schlüssel "oak" in beiden Aufrufen gleich. Diese drei Gewohnheiten sind der Checkpoint dieser Seite, bevor du weitergehst. Wenn der Bildschirm nach get("oak") leaf zeigt, hat HashMap seinen Job für diese Lektion erledigt und du bist bereit für das nächste Thema.
🧠 Testen Sie Ihr Wissen
Testen Sie Ihr Wissen
Fordern Sie sich mit diesem interaktiven Quiz heraus und sehen Sie, wie gut Sie das Thema verstehen
📝 Anweisungen
- Lesen Sie jede Frage sorgfältig
- Wählen Sie die beste Antwort für jede Frage
- Sie können das Quiz so oft wiederholen, wie Sie möchten
- Ihr Fortschritt wird oben angezeigt