Menu
Coddy logo textTech

HashMap Aninhado

Parte da seção Lógica e Fluxo do Journey de Java da Coddy — lição 19 de 59.

Um HashMap aninhado é um HashMap cujos valores são eles mesmos HashMaps. Isso permite que você organize dados complexos de forma hierárquica. Por exemplo, você pode ter um HashMap externo que mapeia categorias (como "Eletrônicos" ou "Móveis") para HashMaps internos que contêm produtos e seus preços.

Crie um HashMap aninhado: categorias -> (itens -> preços)

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

Adicione uma categoria "Electronics" com um HashMap interno vazio

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

Adicione um item "Laptop" com preço 1200 em "Electronics"

inventory.get("Electronics").put("Laptop", 1200);

Verifique se o mapa externo está vazio e imprima seu tamanho

System.out.println(inventory.isEmpty());
// Output: false
System.out.println(inventory.size()); 
// Output: 1

Neste exemplo, o map externo possui uma chave ("Electronics") que mapeia para um HashMap interno contendo a chave "Laptop" e seu valor 1200.

challenge icon

Desafio

Fácil

Crie um método chamado <b>printNestedInventory</b> que recebe um HashMap aninhado chamado inventory como entrada. Neste inventário:

  • Chaves são categorias (e.g., "Electronics", "Furniture").
  • Valores são HashMaps internos onde as chaves são nomes de produtos e os valores são seus preços.

O seu método deve imprimir o inventário no seguinte formato:

  • Para cada categoria, imprima Category: <name>
  • Se a categoria tiver produtos, imprima cada um como Product: <name>, Price: <price> (com 2 espaços de indentação)
  • Se a categoria tiver nenhum produto, imprima (No products) (com 2 espaços de indentação)

Example 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: O HashMap não garante a ordem de iteração, então a ordem das categorias e produtos na sua saída pode diferir do exemplo acima — isso é esperado.

Nota: Você precisará importar java.util.Map além das outras importações fornecidas.

Folha de consulta

Um HashMap aninhado é um HashMap cujos valores são eles mesmos HashMaps, permitindo a organização hierárquica de dados.

Crie um HashMap aninhado:

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

Adicione uma categoria com um HashMap interno vazio:

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

Adicione um item ao HashMap interno:

inventory.get("Electronics").put("Laptop", 1200);

Verifique se o mapa externo está vazio e obtenha seu tamanho:

System.out.println(inventory.isEmpty()); // false
System.out.println(inventory.size()); // 1

Experimente você mesmo

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) {
        // Itere sobre cada categoria no HashMap externo
        // Para cada categoria, imprima "Category: <name>"
        // Se o mapa interno estiver vazio, imprima "  (No products)"
        // Caso contrário, itere sobre cada produto e imprima "  Product: <name>, Price: <price>"
        // Escreva seu código aqui
    }

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

        // Converte string JSON para HashMap Aninhado
        Type inventoryType = new TypeToken<HashMap<String, HashMap<String, Integer>>>(){}.getType();
        HashMap<String, HashMap<String, Integer>> inventory = new Gson().fromJson(inventoryString, inventoryType);

        printNestedInventory(inventory);
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e Fluxo