Verschachtelte HashMap
Teil des Abschnitts Logik & Ablauf der Java-Journey von Coddy — Lektion 19 von 59.
Ein verschachteltes HashMap ist ein HashMap, dessen Werte selbst HashMaps sind. Dies ermöglicht es Ihnen, komplexe Daten hierarchisch zu organisieren. Zum Beispiel können Sie ein äußeres HashMap haben, das Kategorien (wie „Elektronik“ oder „Möbel“) auf innere HashMaps abbildet, die Produkte und ihre Preise enthalten.
Erstellen Sie eine verschachtelte HashMap: Kategorien -> (Artikel -> Preise)
HashMap<String, HashMap<String, Integer>> inventory = new HashMap<>();Füge eine Kategorie „Electronics“ mit einer leeren inneren HashMap hinzu
inventory.put("Electronics", new HashMap<>());Fügen Sie ein Element „Laptop“ mit Preis 1200 in „Electronics“ hinzu
inventory.get("Electronics").put("Laptop", 1200);Überprüfen, ob die äußere Map leer ist, und ihre Größe ausgeben
System.out.println(inventory.isEmpty());
// Output: false
System.out.println(inventory.size());
// Output: 1In diesem Beispiel hat die äußere Map einen Schlüssel („Electronics“), der auf eine innere HashMap abbildet, die den Schlüssel „Laptop“ und seinen Wert 1200 enthält.
Aufgabe
EinfachErstellen Sie eine Methode namens <b>printNestedInventory</b>, die eine verschachtelte HashMap namens inventory als Eingabe nimmt. In diesem Inventar:
- Schlüssel sind Kategorien (z. B. "Electronics", "Furniture").
- Werte sind innere HashMaps, in denen Schlüssel Produktnamen und Werte deren Preise sind.
Ihre Methode sollte das Inventar im folgenden Format ausgeben:
- Für jede Kategorie drucken Sie
Category: <name> - Wenn die Kategorie Produkte hat, drucken Sie jedes als
Product: <name>, Price: <price>(mit 2 Leerzeichen Einrückung) - Wenn die Kategorie keine Produkte hat, drucken Sie
(No products)(mit 2 Leerzeichen Einrückung)
Beispielausgabe:
Category: Electronics
Product: Laptop, Price: 1200
Product: Smartphone, Price: 800
Category: Furniture
Product: Chair, Price: 50
Product: Table, Price: 150
Category: EmptyCategory
(No products)Hinweis: HashMap garantiert keine Iterationsreihenfolge, daher kann die Reihenfolge der Kategorien und Produkte in Ihrer Ausgabe von dem obigen Beispiel abweichen — das ist erwartet.
Hinweis: Sie müssen java.util.Map zusätzlich zu den anderen bereitgestellten Imports importieren.
Spickzettel
Eine verschachtelte HashMap ist eine HashMap, deren Werte selbst HashMaps sind, was eine hierarchische Datenorganisation ermöglicht.
Erstellen Sie eine verschachtelte HashMap:
HashMap<String, HashMap<String, Integer>> inventory = new HashMap<>();Fügen Sie eine Kategorie mit einer leeren inneren HashMap hinzu:
inventory.put("Electronics", new HashMap<>());Fügen Sie ein Element zur inneren HashMap hinzu:
inventory.get("Electronics").put("Laptop", 1200);Überprüfen Sie, ob die äußere Map leer ist, und erhalten Sie ihre Größe:
System.out.println(inventory.isEmpty()); // false
System.out.println(inventory.size()); // 1Probier es selbst
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void printNestedInventory(HashMap<String, HashMap<String, Integer>> inventory) {
// Iteriere über jede Kategorie in der äußeren HashMap
// Gib für jede Kategorie "Category: <name>" aus
// Wenn die innere Map leer ist, gib " (No products)" aus
// Andernfalls iteriere über jedes Produkt und gib " Product: <name>, Price: <price>" aus
// Schreibe deinen Code hier
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String inventoryString = scanner.nextLine();
// Konvertiere den JSON-String in eine verschachtelte HashMap
Type inventoryType = new TypeToken<HashMap<String, HashMap<String, Integer>>>(){}.getType();
HashMap<String, HashMap<String, Integer>> inventory = new Gson().fromJson(inventoryString, inventoryType);
printNestedInventory(inventory);
}
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Mehrdimensionale Arrays
Grundlagen der 2D-ArraysZugriff auf 2D-Array-ElementeVerschachtelte Schleifen mit 2D-ArraysZusammenfassung - 2D-ArraysMatrixaddition & SubtraktionJagged Arrays3D-Arrays und darüber hinausGängige 2D-Array-MusterZusammenfassung - Alles über Arrays2HashMap Teil 1
Was ist eine HashMap?Eine HashMap deklarierenWerte abrufenPrüfen, ob ein Schlüssel existiertWörterbücher modifizierenZusammenfassung - HashMap3HashMap Teil 2
HashMap-MethodenMit keySet() iterierenMit entrySet() iterierenVerschachtelte HashMapZusammenfassung - Lager verwaltenZusammenfassung - HashMap-Operationen6Erweiterter Steuerungsfluss
Beschriftete AnweisungenSwitch-AusdruckMusterabgleichSchutzklauselnZusammenfassung - Steuerungsfluss9Projekt - Einzigartiger Wortzähler
Texteingabe und SpeicherungWortverarbeitung