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. So kannst du komplexe Daten hierarchisch organisieren. Beispielsweise kannst du eine äußere HashMap haben, die Kategorien (wie "Electronics" oder "Furniture") inneren HashMaps zuordnet, die Produkte und ihre 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 hat die äußere Map einen Schlüssel („Electronics“), der einer inneren HashMap zugeordnet ist, die den Schlüssel „Laptop“ und den Wert 1200 enthält.
Aufgabe
EinfachErstelle eine Methode namens printNestedInventory, die eine verschachtelte HashMap namens inventory als Eingabe entgegennimmt. 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 so vorgesehen.
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) {
// Durchlaufe 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 durchlaufe 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();
// Wandle den JSON-String in eine verschachtelte HashMap um
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