Menu
Coddy logo textTech

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: 1

In 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.

challenge icon

Aufgabe

Einfach

Erstellen 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()); // 1

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
        // 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);
    }
}
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