
Tablas Hash
Claves, valores y búsquedas ultrarrápidas ⚡

💡 Introducción: ¿Por qué amar las Tablas Hash?
Las tablas hash son una de las estructuras de datos más poderosas y usadas 🔥.
Nos permiten hacer búsquedas, inserciones y eliminaciones en O(1) promedio.
📘 Aplicaciones clásicas:
📝 Correctores ortográficos (buscar palabras en milisegundos)
📚 Diccionarios bilingües (clave = palabra, valor = traducción)
💻 Compiladores (buscar direcciones de variables y funciones)
🧠 Editores de código (autocompletar, colores, referencias)
🧠 Mismo concepto, distintos nombres
| Lenguaje | Nombre |
|---|---|
| Java | HashMap |
| JavaScript | Object |
| Python / C# | Dictionary |
En todos los casos, almacenan pares (clave, valor)
y permiten acceder a ellos en tiempo constante promedio ⚡
🔑 Idea central de una tabla hash
Imagina que queremos guardar empleados y buscarlos por su número de empleado 🧑💼
1️⃣ La clave será el número del empleado
2️⃣ El valor será el objeto del empleado
3️⃣ Una función hash calcula la posición donde se guardará

⚙️ Funcionamiento interno
Internamente, una tabla hash usa un arreglo para guardar los datos.
Cuando insertamos:
La clave pasa por la función hash
Esta genera un índice
Y el valor se almacena en esa posición del arreglo 🧩
🧩 Ventajas clave
✅ Velocidad: accesos directos sin recorrer listas
✅ Simplicidad: solo se necesita una función hash
✅ Flexibilidad: admite cualquier tipo de clave
✅ Popularidad: usada en casi todos los lenguajes modernos
⚠️ Pero… ¿Qué pasa si dos claves caen en la misma posición?
Una tabla hash es una estructura que guarda pares (clave, valor) de forma muy rápida.
Para decidir en qué posición guardar algo, usa una función hash, que transforma la clave en un número (el “índice” dentro de un arreglo).
Por ejemplo:
hash("A") = 2
hash("B") = 2
hash("C") = 3Si “A” y “B” caen en la misma posición (2), ocurre una colisión.
Esto se llama una colisión 💥
Y existen varias formas de resolverla:
1️⃣ Encadenamiento (chaining): cada posición guarda una lista de valores
2️⃣ Dirección abierta (open addressing): busca la siguiente celda libre
(Aquí dos claves distintas dieron el mismo hash y se guardaron en una lista interna)
En cada inserción, el elemento pasa por la función hash y cae en su posición. Cuando otra clave produce el mismo hash, se genera una colisión.
En este ejemplo usamos encadenamiento, es decir, cada celda guarda una lista enlazada de nodos.
Así, la posición 2 contiene los nodos A → B, y la 5 contiene C → E.
🔍 Resumen final
| Operación | Descripción | Complejidad |
|---|---|---|
| Insertar | Agrega un par (clave, valor) | O(1) |
| Buscar | Recupera el valor asociado a una clave | O(1) |
| Eliminar | Borra el valor asociado a una clave | O(1) |
⚡ En promedio, las tablas hash nos ofrecen una eficiencia insuperable.
💬 En la próxima parte aprenderemos cómo implementarlas desde cero en Java 🚀