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: 1Neste exemplo, o map externo possui uma chave ("Electronics") que mapeia para um HashMap interno contendo a chave "Laptop" e seu valor 1200.
Desafio
FácilCrie 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()); // 1Experimente 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);
}
}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
1Arrays Multidimensionais
Básicos de Arrays 2DAcessando Elementos de Arrays 2DLoops Aninhados com Arrays 2DResumo - Arrays 2DAdição e Subtração de MatrizesArrays EscalonadosArrays 3D e AlémPadrões Comuns de Arrays 2DResumo - Tudo Sobre Arrays2HashMap Parte 1
O que é um HashMap?Declarar um HashMapAcessando ValoresVerificar se a Chave ExisteModificando DicionáriosResumo - HashMap3HashMap Parte 2
Métodos do HashMapIterar com keySet()Iterar com entrySet()HashMap AninhadoResumo - Gerenciar ArmazémResumo - Operações do HashMap6Fluxo de Controle Avançado
Declarações RotuladasExpressão SwitchCorrespondência de PadrõesCláusulas de GuardaResumo - Fluxo de Controle9Projeto - Contador de Palavras Únicas
Entrada e Armazenamento de TextoProcessamento de Palavras