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: 1In 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.
Aufgabe
EinfachErstelle 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);
}
}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Übe selbstständig: Online-Java-Compiler