Menu
Coddy logo textTech

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: 1

Dans cet exemple, la map externe possède une clé (« Electronics ») qui mappe vers une HashMap interne contenant la clé « Laptop » et sa valeur 1200.

challenge icon

Défi

Facile

Cré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()); // 1

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) {
        // 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);
    }
}
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