Skip to content

Latest commit

 

History

History

08-Colecciones-Mapa

// concepto

Map almacena pares clave-valor. No permite claves duplicadas (una clave siempre apunta a exactamente un valor). Es la estructura fundamental para búsquedas por clave en O(1).

Map<String, Integer> edades = new HashMap<>();
edades.put("Ana", 30);
edades.get("Ana");          // 30
edades.containsKey("Ana");  // true
edades.getOrDefault("Bob", 0);  // 0
edades.computeIfAbsent("Carlos", k -> calcularEdad(k));
// key features
Implementación Orden Complejidad Null key Notas
HashMap Ninguno O(1) get/put Sí (1) Opción por defecto
LinkedHashMap Inserción O(1) Sí (1) Mantiene orden de inserción
TreeMap Natural/Comparator O(log n) No Siempre ordenado por clave
WeakHashMap Ninguno O(1) Sí Claves con referencias débiles (GC)
IdentityHashMap Ninguno O(1) Sí Compara claves con == en vez de equals
Hashtable Ninguno O(1) No Legacy, sincronizado. Evitar.

HashMap es la opción por defecto. Funciona con hashCode() + equals(): llaves con el mismo hashCode van al mismo bucket, luego se diferencia con equals.

Importante: si usas objetos propios como claves, debes implementar correctamente hashCode() y equals().

// ventajas
  • Búsqueda por clave en O(1) con HashMap.
  • Múltiples implementaciones para distintos requisitos (orden, concurrencia).
  • API rica: getOrDefault, computeIfAbsent, merge, forEach, entrySet.
  • Base de muchos algoritmos de agrupación y caché.

Ver cada implementación en los archivos Exp*.java para comparar comportamientos concretos.