Objetivos del bloque
- Entender el concepto de almacenamiento mediante pares «clave-valor».
- Aprender a declarar, rellenar y leer datos usando la clase
HashMapen Java. - Diferenciar claramente cuándo debemos usar un
ArrayListy cuándo unHashMap. - Conocer los usos reales de los Mapas en el desarrollo de software profesional.
Lo esencial
Un Mapa (Map) es una estructura de datos que no guarda elementos sueltos, sino parejas de elementos. Cada pareja está formada por una clave (que debe ser única, no se puede repetir) y un valor (que es el dato que realmente queremos guardar). Es el equivalente informático a tu agenda del móvil: usas el nombre de tu amigo (clave) para encontrar su número de teléfono (valor).
1. ¿Qué es un Mapa en programación?
Hasta ahora, para guardar una colección de datos hemos utilizado Arrays o ArrayList. En esas estructuras, la información se guarda de forma ordenada y, para acceder a un dato concreto, necesitamos saber su posición numérica (el índice 0, 1, 2…).
Sin embargo, en la vida real no siempre buscamos las cosas por su número. Piensa en la agenda de contactos de tu teléfono. Cuando quieres llamar a tu madre, no piensas «voy a llamar al contacto número 43». Simplemente buscas la palabra «Mamá» y el teléfono te devuelve su número.
Un Mapa (Map) en Java es exactamente eso: una estructura de datos que guarda la información en parejas. A esta pareja la llamamos Clave-Valor (Key-Value).
- La Clave (Key): Es el identificador único. Es la palabra «Mamá» en tu agenda, o el DNI de una persona. No puede haber dos claves iguales en un mismo mapa.
- El Valor (Value): Es el dato que queremos guardar. Es el número de teléfono, o los datos completos del alumno. Los valores sí pueden repetirse.
2. HashMap: La herramienta principal
En Java, Map es solo el concepto (una interfaz). Para usarlo de verdad en nuestro código, necesitamos una implementación concreta. La más rápida, eficiente y utilizada en el 99% de los casos es el HashMap.
La principal ventaja de un HashMap es su velocidad. No importa si tienes guardados 10 datos o 10 millones; si le das la Clave correcta, el HashMap encuentra el Valor de forma casi instantánea, sin tener que recorrer toda la lista uno a uno.
3. ¿Para qué se utiliza un HashMap en la programación real?
Esta es una de las estructuras más demandadas en el mundo laboral. Rara vez verás una aplicación profesional que no use Mapas. Aquí tienes tres ejemplos reales:
3.1. Búsqueda rápida de usuarios (Caché y Sesiones)
Imagina el sistema de un hospital. Tienen millones de pacientes. Si guardan los pacientes en un ArrayList, cada vez que metes un DNI, el ordenador tiene que mirar paciente por paciente hasta encontrarlo (muy lento).
Si usan un HashMap donde la Clave es el DNI y el Valor es el historial del paciente, el acceso es directo y la aplicación va fluida.
3.2. Contar frecuencias o repeticiones
Si estás programando el software de una caja registradora y necesitas saber cuántos productos de cada tipo se han vendido en el día.
- Clave: El nombre del producto («Barra de pan»).
- Valor: La cantidad vendida (45).Cada vez que pasas un código de barras, buscas la Clave en el Mapa y le sumas 1 al Valor.
3.3. Configuraciones de aplicaciones
Cuando instalas un videojuego o un programa, tus opciones (volumen, idioma, resolución) se guardan en un archivo. Al cargar el programa, esos datos se meten en un Mapa.
- Clave: «Idioma_Interfaz» -> Valor: «Español»
- Clave: «Volumen_General» -> Valor: «80»
4. Cómo usar un HashMap en Java paso a paso
Vamos a traducir todo esto a código. En IntelliJ, recuerda que debes importar java.util.HashMap y java.util.Map.
4.1. Declaración e inicialización
Al crear un mapa, tenemos que decirle a Java de qué tipo va a ser la Clave y de qué tipo va a ser el Valor, usando los nombres de las clases envolventes (String, Integer, Double…).
Java
// Creamos un mapa simulando un censo.
// La Clave será el DNI (String) y el Valor será el Nombre (String).
Map<String, String> censo = new HashMap<>();
4.2. Añadir datos: el método put()
Para meter datos no usamos add() como en las listas, usamos put(clave, valor).
Java
censo.put("11111111A", "Ana García");
censo.put("22222222B", "Luis Pérez");
censo.put("33333333C", "Marta López");
// IMPORTANTE: Si usamos una Clave que ya existe, no da error.
// Lo que hace es SOBRESCRIBIR el valor antiguo con el nuevo.
censo.put("11111111A", "Ana García Fernández"); // Actualiza el nombre de Ana
4.3. Recuperar datos: el método get()
Aquí está la magia. Para obtener un dato, solo le pasamos la Clave.
Java
String nombre = censo.get("22222222B");
System.out.println("El ciudadano con ese DNI es: " + nombre);
// Imprime: El ciudadano con ese DNI es: Luis Pérez
// Si pedimos una Clave que no existe, nos devuelve null
String desconocido = censo.get("99999999Z");
System.out.println(desconocido); // Imprime: null
4.4. Comprobar si existe una Clave
Antes de buscar o añadir un dato, muchas veces necesitamos saber si esa Clave ya está registrada para evitar sobrescribir datos por accidente. Usamos containsKey().
Java
if (censo.containsKey("33333333C")) {
System.out.println("Ese DNI ya está registrado en el sistema.");
} else {
censo.put("33333333C", "Nuevo Usuario");
}
4.5. Borrar un elemento
Si queremos eliminar una pareja del mapa, solo necesitamos su Clave.
Java
censo.remove("22222222B"); // Luis Pérez desaparece del mapa
5. Recorriendo un HashMap (Nivel básico)
Un Mapa no se puede recorrer con un bucle for tradicional numérico, porque no hay posiciones (no hay índice 0 ni 1). Si necesitamos ver todo el contenido del mapa, lo más sencillo es pedirle al mapa su conjunto de Claves usando keySet(), y usar un bucle for-each:
Java
// mapa.keySet() nos da una lista con todos los DNIs
for (String dniActual : censo.keySet()) {
// Por cada DNI, le pedimos al mapa su valor correspondiente
String persona = censo.get(dniActual);
System.out.println("DNI: " + dniActual + " - Nombre: " + persona);
}
6. Diferencia clave: ¿Cuándo elijo ArrayList y cuándo HashMap?
Para que no te bloquees al plantear la solución a un problema en tus prácticas, hazte esta pregunta: ¿Cómo voy a necesitar buscar la información después?
- Usa ArrayList si: Solo necesitas guardar cosas en orden, vas a recorrerlas todas de principio a fin, o no necesitas buscar elementos concretos rápidamente. (Ejemplo: Una lista de las últimas 10 canciones reproducidas).
- Usa HashMap si: Vas a necesitar buscar, actualizar o borrar datos constantemente basándote en un identificador único (DNI, matrícula, código de producto, nombre de usuario). (Ejemplo: El censo de vehículos de la DGT).
🧩 Conclusión
En resumen, los Mapas y, en especial, HashMap, son herramientas imprescindibles cuando necesitas acceder a información mediante un identificador único y con máxima velocidad. Su estructura clave‑valor permite búsquedas instantáneas, actualizaciones eficientes y una organización más natural de los datos en aplicaciones reales. Dominar HashMap te ayudará a diseñar sistemas más robustos, escalables y alineados con las prácticas profesionales del desarrollo en Java.


Deja una respuesta