HashMap Anidado
Parte de la sección Lógica y Flujo del Journey de Java de Coddy. Lección 19 de 59.
Un HashMap anidado es un HashMap cuyos valores son, a su vez, HashMaps. Esto te permite organizar datos complejos jerárquicamente. Por ejemplo, puedes tener un HashMap externo que asigne categorías (como "Electronics" o "Furniture") a HashMaps internos que contengan productos y sus precios.
Crea un HashMap anidado: categorías -> (artículos -> precios)
HashMap<String, HashMap<String, Integer>> inventory = new HashMap<>();Añade una categoría «Electronics» con un HashMap interno vacío
inventory.put("Electronics", new HashMap<>());Añade el artículo "Laptop" con un precio de 1200 a "Electronics"
inventory.get("Electronics").put("Laptop", 1200);Comprueba si el mapa exterior está vacío e imprime su tamaño
System.out.println(inventory.isEmpty());
// Salida: false
System.out.println(inventory.size());
// Salida: 1En este ejemplo, el mapa exterior tiene una clave ("Electronics") que se asigna a un HashMap interno que contiene la clave "Laptop" y su valor 1200.
Desafío
FácilCrea un método llamado <b>printNestedInventory</b> que reciba como entrada un HashMap anidado llamado inventory. En este inventario:
- Las claves son categorías (por ejemplo, "Electronics", "Furniture").
- Los valores son HashMap internos cuyas claves son nombres de productos y cuyos valores son sus precios.
Tu método debe imprimir el inventario con el siguiente formato:
- Para cada categoría, imprime
Category: <name> - Si la categoría tiene productos, imprime cada uno como
Product: <name>, Price: <price>(con 2 espacios de sangría) - Si la categoría no tiene productos, imprime
(No products)(con 2 espacios de sangría)
Salida de ejemplo:
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: HashMap no garantiza el orden de iteración, por lo que el orden de las categorías y los productos en tu salida puede diferir del ejemplo anterior. Esto es lo esperado.
Nota: Necesitarás importar java.util.Map además de las otras importaciones proporcionadas.
Pruébalo tú mismo
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) {
// Itera sobre cada categoría en el HashMap exterior
// Para cada categoría, imprime "Category: <name>"
// Si el mapa interior está vacío, imprime " (No products)"
// De lo contrario, itera sobre cada producto e imprime " Product: <name>, Price: <price>"
// Escribe tu código aquí
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String inventoryString = scanner.nextLine();
// Convierte la cadena JSON a Nested HashMap
Type inventoryType = new TypeToken<HashMap<String, HashMap<String, Integer>>>(){}.getType();
HashMap<String, HashMap<String, Integer>> inventory = new Gson().fromJson(inventoryString, inventoryType);
printNestedInventory(inventory);
}
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Arreglos Multidimensionales
Básicos de Arreglos 2DAccediendo a Elementos de Arreglos 2DBucles Anidados con Arreglos 2DResumen - Arreglos 2DSuma y Resta de MatricesArreglos IrregularesArreglos 3D y Más AlláPatrones Comunes de Arreglos 2DResumen - Todo Sobre Arreglos4HashSet Parte 1
¿Qué es un HashSet?Agregando un elementoEliminando un elementoComprobando si existe un elementoVacío y tamañoLimpiar y clonarResumen - HashSet7Manejo Básico de Errores
Básicos de Try-CatchBloque FinallyLanzamiento de ExcepcionesExcepciones Personalizadas2HashMap Parte 1
¿Qué es un HashMap?Declarar un HashMapAcceder a ValoresVerificar si una Clave ExisteModificar DiccionariosResumen - HashMap3HashMap Parte 2
Métodos de HashMapIterar con keySet()Iterar con entrySet()HashMap AnidadoResumen - Gestionar AlmacénResumen - Operaciones de HashMap6Flujo de Control Avanzado
Sentencias EtiquetadasExpresión SwitchCoincidencia de PatronesCláusulas de GuardiaResumen - Flujo de Control9Proyecto - Contador de Palabras Únicas
Entrada y Almacenamiento de TextoProcesamiento de PalabrasPractica por tu cuenta: Compilador de Java online