MapVamos a ver cómo trabajar con Hash Tables en Java 💻
En Java, las tablas hash se implementan a través de la interfaz Map, que define los métodos básicos que toda estructura tipo mapa debe tener.
Mapimport java.util.*;
public class DemoHashMap {
public static void main(String[] args) {
// Creamos un nuevo HashMap: clave = Integer, valor = String
Map<Integer, String> empleados = new HashMap<>();
// Agregamos pares clave-valor
empleados.put(1, "Mosh");
empleados.put(2, "John");
empleados.put(3, "Mary");
System.out.println(empleados);
}
}Map y sus implementacionesEn Java, Map es una interfaz genérica, y tiene muchas implementaciones distintas:
| Implementación | Descripción |
|---|---|
🧠 HashMap |
La más común y eficiente |
🧱 Hashtable |
Antigua (legado), no recomendada |
⚙️ ConcurrentHashMap |
Para ambientes multithreaded |
💡 El 80% del tiempo usarás HashMap.
Si agregamos una clave que ya existe, el valor anterior será reemplazado por el nuevo 🔄
➡️ En los HashMap, no se permiten claves duplicadas, pero sí se pueden tener valores repetidos o nulos (null).
containsKey() y containsValue()Veamos cómo verificar si una clave o valor existen en el mapa 👇
containsKey() y containsValue()Veamos cómo verificar si una clave o valor existen en el mapa 👇
containsKey() — Búsqueda directa👇 Cada celda representa una posición del arreglo interno de la Hash Table.
💡 La función hash calcula la posición exacta → busca directamente la celda 🟩
containsValue() — Búsqueda secuencial🔵 En este caso, la tabla no puede usar la función hash — debe revisar cada valor manualmente, celda por celda 🐢
| Método | Estrategia de búsqueda | Complejidad | Animación |
|---|---|---|---|
containsKey() |
Directa con función hash | ⚡ O(1) | 🟩 Acceso directo |
containsValue() |
Secuencial | 🐢 O(n) | 🔵 Recorre todas |
No se puede iterar directamente sobre un HashMap 🛑, pero podemos hacerlo usando sus vistas (keySet() o entrySet()).
🧠 Cada elemento en entrySet() es un par (clave, valor), y podemos obtener cada parte por separado con getKey() y getValue().