HashMap imbriqué
Fait partie de la section Logique & Flux du Journey Java de Coddy — leçon 19 sur 59.
Un HashMap imbriqué est un HashMap dont les valeurs sont elles-mêmes des HashMaps. Cela vous permet d’organiser des données complexes de manière hiérarchique. Par exemple, vous pouvez avoir un HashMap externe qui associe des catégories (comme « Electronics » ou « Furniture ») à des HashMaps internes qui contiennent des produits et leurs prix.
Créez une HashMap imbriquée : catégories -> (articles -> prix)
HashMap<String, HashMap<String, Integer>> inventory = new HashMap<>();Ajoutez une catégorie «Electronics» avec un HashMap interne vide
inventory.put("Electronics", new HashMap<>());Ajouter un article « Laptop » avec un prix de 1200 dans « Electronics »
inventory.get("Electronics").put("Laptop", 1200);Vérifiez si la map externe est vide et affichez sa taille
System.out.println(inventory.isEmpty());
// Output: false
System.out.println(inventory.size());
// Output: 1Dans cet exemple, la map externe possède une clé (« Electronics ») qui mappe vers une HashMap interne contenant la clé « Laptop » et sa valeur 1200.
Défi
FacileCréez une méthode nommée <b>printNestedInventory</b> qui prend une HashMap imbriquée appelée inventory en entrée. Dans cet inventaire :
- Clés sont des catégories (par exemple, "Electronics", "Furniture").
- Valeurs sont des HashMaps internes où les clés sont les noms des produits et les valeurs sont leurs prix.
Votre méthode doit imprimer l'inventaire dans le format suivant :
- Pour chaque catégorie, imprimez
Category: <name> - Si la catégorie a des produits, imprimez chacun comme
Product: <name>, Price: <price>(avec 2 espaces d'indentation) - Si la catégorie a aucun produit, imprimez
(No products)(avec 2 espaces d'indentation)
Exemple de sortie :
Category: Electronics
Product: Laptop, Price: 1200
Product: Smartphone, Price: 800
Category: Furniture
Product: Chair, Price: 50
Product: Table, Price: 150
Category: EmptyCategory
(No products)Note : HashMap ne garantit pas l'ordre d'itération, donc l'ordre des catégories et des produits dans votre sortie peut différer de l'exemple ci-dessus — c'est attendu.
Note : Vous devrez importer java.util.Map en plus des autres imports fournis.
Aide-mémoire
Un HashMap imbriqué est un HashMap dont les valeurs sont elles-mêmes des HashMaps, permettant une organisation hiérarchique des données.
Créez un HashMap imbriqué :
HashMap<String, HashMap<String, Integer>> inventory = new HashMap<>();Ajoutez une catégorie avec un HashMap interne vide :
inventory.put("Electronics", new HashMap<>());Ajoutez un article au HashMap interne :
inventory.get("Electronics").put("Laptop", 1200);Vérifiez si la carte externe est vide et obtenez sa taille :
System.out.println(inventory.isEmpty()); // false
System.out.println(inventory.size()); // 1Essayez vous-même
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) {
// Parcourir chaque catégorie dans la HashMap externe
// Pour chaque catégorie, afficher "Category: <name>"
// Si la map interne est vide, afficher " (No products)"
// Sinon, parcourir chaque produit et afficher " Product: <name>, Price: <price>"
// Écrivez votre code ici
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String inventoryString = scanner.nextLine();
// Convertir la chaîne JSON en HashMap imbriquée
Type inventoryType = new TypeToken<HashMap<String, HashMap<String, Integer>>>(){}.getType();
HashMap<String, HashMap<String, Integer>> inventory = new Gson().fromJson(inventoryString, inventoryType);
printNestedInventory(inventory);
}
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique & Flux
1Tableaux multidimensionnels
Bases des tableaux 2DAccès aux éléments des tableaux 2DBoucles imbriquées avec les tableaux 2DRécapitulatif - Tableaux 2DAddition et soustraction de matricesTableaux irréguliersTableaux 3D et au-delàMotifs courants des tableaux 2DRécapitulatif - Tout sur les tableaux4HashSet Partie 1
Qu'est-ce qu'un HashSet ?Ajouter un ÉlémentSupprimer un ÉlémentVérifier si un Élément ExisteVide et TailleVider et ClonerRécapitulatif - HashSet7Gestion des erreurs de base
Bases du try-catchBloc finallyLever des exceptionsExceptions personnalisées2HashMap Partie 1
Qu'est-ce qu'une HashMap ?Déclarer une HashMapAccéder aux ValeursVérifier si une Clé ExisteModifier les DictionnairesRécapitulatif - HashMap3HashMap Partie 2
Méthodes HashMapItérer avec keySet()Itérer avec entrySet()HashMap imbriquéRécapitulatif - Gérer l'entrepôtRécapitulatif - Opérations HashMap6Flux de contrôle avancé
Instructions étiquetéesExpression switchAppariement de motifsClauses de gardeRécapitulatif - Flux de contrôle9Projet - Compteur de Mots Uniques
Entrée de Texte et StockageTraitement des Mots