Menu
CoddyTech

HashMap imbriqué

Fait partie de la section Logique & Flux du Journey Java de Coddy. Leçon 19 sur 59.

Une HashMap imbriquée est une HashMap dont les valeurs sont elles-mêmes des HashMaps. Cela te permet d’organiser des données complexes de façon hiérarchique. Par exemple, tu peux avoir une HashMap externe qui associe des catégories (comme "Electronics" ou "Furniture") à des HashMaps internes contenant des produits et leurs prix.

Créez une HashMap imbriquée : catégories -> (articles -> prix)

HashMap<String, HashMap<String, Integer>> inventory = new HashMap<>();

Ajoute une catégorie « Electronics » avec une HashMap interne vide

inventory.put("Electronics", new HashMap<>());

Ajoutez un article « Laptop » au 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());
// Sortie : false
System.out.println(inventory.size()); 
// Sortie : 1

Dans cet exemple, la map externe possède une clé ("Electronics") qui est associée à une HashMap interne contenant la clé "Laptop" et sa valeur 1200.

challenge icon

Défi

Facile

Créez une méthode nommée printNestedInventory qui prend en entrée une HashMap imbriquée appelée inventory. Dans cet inventaire :

  • Les clés sont des catégories (par ex., "Electronics", "Furniture").
  • Les valeurs sont des HashMaps internes où les clés sont les noms des produits et les valeurs sont leurs prix.

Votre méthode doit afficher l’inventaire au format suivant :

  • Pour chaque catégorie, affichez Category: <name>
  • Si la catégorie contient des produits, affichez chacun d’eux sous la forme Product: <name>, Price: <price> (avec une indentation de 2 espaces)
  • Si la catégorie ne contient aucun produit, affichez (No products) (avec une indentation de 2 espaces)

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)

Remarque : HashMap ne garantit pas l’ordre d’itération ; l’ordre des catégories et des produits dans votre sortie peut donc différer de celui de l’exemple ci-dessus. C’est normal.

Remarque : Vous devrez importer java.util.Map en plus des autres imports fournis.

Essayez 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) {
        // Parcourez chaque catégorie du HashMap externe
        // Pour chaque catégorie, affichez "Category: <name>"
        // Si la map interne est vide, affichez "  (No products)"
        // Sinon, parcourez chaque produit et affichez "  Product: <name>, Price: <price>"
        // Écrivez votre code ici
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String inventoryString = scanner.nextLine();

        // Convertissez la chaîne JSON en HashMap imbriqué
        Type inventoryType = new TypeToken<HashMap<String, HashMap<String, Integer>>>(){}.getType();
        HashMap<String, HashMap<String, Integer>> inventory = new Gson().fromJson(inventoryString, inventoryType);

        printNestedInventory(inventory);
    }
}
quiz iconTestez-vous

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

Entraînez-vous par vous-même : Compilateur Java en ligne