HashMap annidate
Fa parte della sezione Logica e flusso del percorso Java di Coddy. Lezione 19 di 59.
Una HashMap annidata è una HashMap i cui valori sono a loro volta HashMap. Questo ti permette di organizzare dati complessi in modo gerarchico. Ad esempio, puoi avere una HashMap esterna che associa categorie (come "Electronics" o "Furniture") a HashMap interne che contengono prodotti e i relativi prezzi.
Crea una HashMap annidata: categorie -> (articoli -> prezzi)
HashMap<String, HashMap<String, Integer>> inventory = new HashMap<>();Aggiungi una categoria "Electronics" con una HashMap interna vuota
inventory.put("Electronics", new HashMap<>());Aggiungi un articolo "Laptop" con prezzo 1200 in "Electronics"
inventory.get("Electronics").put("Laptop", 1200);Verifica se la mappa esterna è vuota e stampa le sue dimensioni
System.out.println(inventory.isEmpty());
// Risultato: false
System.out.println(inventory.size());
// Risultato: 1In questo esempio, la mappa esterna ha una chiave ("Electronics") che corrisponde a una HashMap interna contenente la chiave "Laptop" e il suo valore 1200.
Sfida
FacileCrea un metodo chiamato <b>printNestedInventory</b> che accetti in input una HashMap annidata chiamata inventory. In questo inventario:
- Le chiavi sono categorie (ad es., "Electronics", "Furniture").
- I valori sono HashMap interne in cui le chiavi sono i nomi dei prodotti e i valori sono i relativi prezzi.
Il tuo metodo dovrebbe stampare l'inventario nel seguente formato:
- Per ogni categoria, stampa
Category: <name> - Se la categoria contiene prodotti, stampali uno per riga nel formato
Product: <name>, Price: <price>(con 2 spazi di rientro) - Se la categoria non contiene prodotti, stampa
(No products)(con 2 spazi di rientro)
Esempio di output:
Category: Electronics
Product: Laptop, Price: 1200
Product: Smartphone, Price: 800
Category: Furniture
Product: Chair, Price: 50
Product: Table, Price: 150
Category: EmptyCategory
(No products)Nota: HashMap non garantisce l'ordine di iterazione, quindi l'ordine delle categorie e dei prodotti nel tuo output potrebbe essere diverso da quello dell'esempio precedente. È normale.
Nota: Dovrai importare java.util.Map oltre agli altri import forniti.
Provalo tu
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) {
// Itera su ogni categoria dell'HashMap esterna
// Per ogni categoria, stampa "Category: <name>"
// Se la mappa interna è vuota, stampa " (No products)"
// Altrimenti, itera su ogni prodotto e stampa " Product: <name>, Price: <price>"
// Scrivi qui il tuo codice
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String inventoryString = scanner.nextLine();
// Converti la stringa JSON in una HashMap annidata
Type inventoryType = new TypeToken<HashMap<String, HashMap<String, Integer>>>(){}.getType();
HashMap<String, HashMap<String, Integer>> inventory = new Gson().fromJson(inventoryString, inventoryType);
printNestedInventory(inventory);
}
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Array multidimensionali
Concetti di base degli array 2DAccesso agli elementi degli array 2DCicli annidati con array 2DRiepilogo - Array 2DAddizione e sottrazione di matriciArray irregolariArray 3D e oltreSchemi comuni degli array 2DRiepilogo - Tutto sugli array4HashSet Parte 1
Che cos'è un HashSet?Aggiungere un elementoRimuovere un elementoVerificare se un elemento esisteVuoto e dimensioneSvuotare e clonareRipasso - HashSet7Gestione di base degli errori
Nozioni di base su try-catchBlocco finallyLancio di eccezioniEccezioni personalizzate2HashMap Parte 1
Che cos'è una HashMap?Dichiarare una HashMapAccedere ai valoriVerificare se una chiave esisteModificare i dizionariRiepilogo - HashMap3HashMap Parte 2
Metodi di HashMapIterare con keySet()Iterare con entrySet()HashMap annidateRiepilogo - Gestire il magazzinoRiepilogo - Operazioni con HashMap6Flusso di controllo avanzato
Istruzioni con etichettaEspressione switchCorrispondenza dei patternClausole guardiaRiepilogo - Flusso di controllo9Progetto - Contatore di parole uniche
Inserimento e memorizzazione del testoElaborazione delle paroleEsercitati da solo: Compilatore Java online