Menu
Coddy logo textTech

Verschachtelte HashMap

Teil des Abschnitts Logik & Ablauf der Java-Journey von Coddy. Lektion 19 von 59.

Eine verschachtelte HashMap ist eine HashMap, deren Werte selbst HashMaps sind. Dadurch kannst du komplexe Daten hierarchisch organisieren. Zum Beispiel kannst du eine äußere HashMap haben, die Kategorien (wie „Elektronik“ oder „Möbel“) auf innere HashMaps abbildet, die Produkte und deren Preise enthalten.

Erstelle 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üge ein Element „Laptop“ mit dem Preis 1200 zu „Electronics“ hinzu

inventory.get("Electronics").put("Laptop", 1200);

Prüfe, ob die äußere Map leer ist, und gib ihre Größe aus

System.out.println(inventory.isEmpty());
// Ausgabe: false
System.out.println(inventory.size()); 
// Ausgabe: 1

In diesem Beispiel enthält die äußere Map einen Schlüssel („Electronics“), der einer inneren HashMap mit dem Schlüssel „Laptop“ und dem zugehörigen Wert 1200 zugeordnet ist.

challenge icon

Aufgabe

Einfach

Erstelle eine Methode namens <b>printNestedInventory</b>, die eine verschachtelte HashMap namens inventory als Eingabe übernimmt. In diesem Inventar:

  • Schlüssel sind Kategorien (z. B. "Electronics", "Furniture").
  • Werte sind innere HashMaps, in denen die Schlüssel Produktnamen und die Werte deren Preise sind.

Deine Methode sollte das Inventar im folgenden Format ausgeben:

  • Gib für jede Kategorie Category: <name> aus.
  • Wenn die Kategorie Produkte enthält, gib jedes davon als Product: <name>, Price: <price> aus (mit 2 Leerzeichen Einrückung).
  • Wenn die Kategorie keine Produkte enthält, gib (No products) aus (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 deiner Ausgabe von der obigen Beispielausgabe abweichen. Das ist erwartetes Verhalten.

Hinweis: Du musst zusätzlich zu den anderen bereitgestellten Imports java.util.Map importieren.

Probier 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
        // Für jede Kategorie gib "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 JSON-String zu Nested HashMap
        Type inventoryType = new TypeToken<HashMap<String, HashMap<String, Integer>>>(){}.getType();
        HashMap<String, HashMap<String, Integer>> inventory = new Gson().fromJson(inventoryString, inventoryType);

        printNestedInventory(inventory);
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-Java-Compiler