Tabla hash: estructura de datos, pares clave-valor y usos
Descubre qué es una tabla hash, cómo funciona la función hash, manejo de pares clave-valor y sus usos en bases de datos, cachés y estructuras de búsqueda rápidas.
Una tabla hash es un tipo de herramienta para almacenar información. En informática, estas herramientas para llevar la cuenta de la información, o los datos, se denominan estructuras de datos. Una tabla hash es una estructura de datos que utiliza una función hash para llevar la cuenta de dónde se colocan los datos. Cada pieza de información que se almacena tiene un nombre, que se llama clave. Por ejemplo, una clave puede ser el nombre de una persona. Cada nombre se empareja con un dato llamado valor, como el número de teléfono de la persona.
Los datos se guardan en otra estructura de datos llamada array, que es como muchas cajas, o cubos, en una fila para mantener los datos. Cada caja tiene un número que empieza por el 0 y cuenta hacia arriba.
La idea detrás de una tabla hash es averiguar en qué casilla poner los datos utilizando sólo su nombre. Esto significa que, no importa cuántas casillas se llenen, siempre se puede encontrar la información rápidamente si se tiene su nombre. La tabla hash utiliza una función hash para averiguar en qué número poner los datos a partir de su nombre. La función hash lee un nombre y devuelve un número.
Una buena tabla Hash siempre encontrará la información a la misma velocidad, sin importar la cantidad de datos que se introduzcan. Muchas tablas Hash también permiten al usuario poner pares clave/valor (un nombre y sus datos) y sacarlos a la misma velocidad.
Por ello, las tablas Hash suelen ser más rápidas a la hora de encontrar información que otras herramientas, como los árboles de búsqueda u otras estructuras de búsqueda de tablas. Por ello, se utilizan en muchos tipos de programas informáticos. Se utilizan sobre todo para matrices asociativas, bases de datos, cachés y conjuntos.
Cómo funciona en la práctica
Cuando se inserta un par clave–valor, la función hash transforma la clave (por ejemplo una cadena o un número) en un entero grande. Ese entero se convierte en un índice dentro del array usando una operación como el resto de la división (mod) o un enmascarado de bits. El valor se guarda en la casilla resultante junto con la clave (o una referencia a ella) para comprobar igualdad cuando sea necesario.
Colisiones y estrategias para resolverlas
Dos claves distintas pueden producir el mismo número tras aplicar la función hash. Esto se llama colisión. Existen varias técnicas para manejar colisiones:
- Encadenamiento (chaining): cada casilla del array almacena una lista (o estructura) de pares clave/valor; todos los elementos con el mismo índice se encadenan allí.
- Direccionamiento abierto (open addressing): si la casilla está ocupada, se busca otra casilla según una secuencia (por ejemplo linear probing, quadratic probing o double hashing) hasta encontrar una libre.
- Tombstones (marcas de borrado): en direccionamiento abierto, al eliminar un elemento conviene dejar una marca especial para no romper las búsquedas posteriores.
Cada enfoque tiene ventajas y desventajas en memoria, velocidad y manejo de eliminaciones.
Complejidad y factor de carga
En promedio, operaciones como búsqueda, inserción y borrado son O(1) —constante— cuando la función hash distribuye bien las claves y la tabla mantiene un factor de carga controlado. El factor de carga es la relación entre el número de elementos almacenados y el tamaño del array. Si el factor de carga crece demasiado, aumentan las colisiones y empeora el rendimiento; por eso muchas implementaciones redimensionan (rehash) la tabla cuando se supera un umbral (por ejemplo 0.6–0.75).
En el peor de los casos (mal diseño de la función hash o ataques deliberados) el rendimiento puede degradarse a O(n) por operación, donde n es el número de elementos.
Tipos de claves y comparación
Las claves pueden ser números, cadenas u objetos. Es importante que exista una función hash rápida y una forma fiable de comparar igualdad entre claves (por ejemplo, método equals en Java). Para objetos personalizados, hay que definir correctamente el comportamiento de hash y de igualdad para evitar errores.
Variantes y consideraciones prácticas
- Implementaciones comunes: en Python el tipo dict, en Java HashMap (o ConcurrentHashMap para concurrencia), en C++ unordered_map.
- Iteración: el orden de los elementos en una tabla hash normalmente no está garantizado. Existen variantes ordenadas (por ejemplo LinkedHashMap) que mantienen un orden determinístico.
- Hash criptográfico vs no criptográfico: las tablas hash usan funciones de hash rápidas y no seguras criptográficamente; si se teme ataques de colisiones, existen funciones específicas o medidas para mitigarlo.
- Memoria: encadenamiento suele usar más memoria por nodo, mientras que direccionamiento abierto usa más espacio continuo en el array y puede ser más compacto en ocasiones.
Operaciones básicas y comportamientos especiales
- Insertar: calcular hash → índice → insertar en ese lugar o en la estructura correspondiente.
- Buscar: calcular hash → índice → comparar claves en esa casilla/estructura hasta encontrarla.
- Eliminar: en encadenamiento se borra de la lista; en direccionamiento abierto puede requerir marcar con tombstone y, a veces, recompactar.
- Redimensionar (rehash): al crecer la tabla se crea un nuevo array mayor y se vuelven a insertar todos los pares para distribuirlos según el nuevo tamaño.
Usos típicos y ejemplos
Las tablas hash son idóneas para:
- Mapas de clave–valor (diccionarios, tablas de símbolos).
- Cachés donde se requiere recuperación rápida por clave.
- Índices en bases de datos y sistemas de almacenamiento.
- Implementación de conjuntos (sets) para comprobación rápida de pertenencia.
Consejos de implementación
- Elige una función hash adecuada para el tipo de clave y evita funciones triviales que provoquen muchas colisiones.
- Controla el factor de carga y redimensiona a tiempo para mantener O(1) promedio.
- Si hay concurrencia, usa implementaciones diseñadas para hilos o sincroniza adecuadamente.
- Para claves largas (strings grandes), considera almacenar y comparar primero fragmentos o usar hashes auxiliares para acelerar las comparaciones.
En resumen, una tabla hash es una estructura de datos muy eficiente para asociar claves a valores y recuperar información rápidamente, siempre que se diseñe y configure correctamente la función hash y se gestione bien el tamaño y las colisiones.

Una pequeña guía telefónica como tabla hash
Preguntas y respuestas
P: ¿Qué es una tabla hash?
R: Una tabla hash es un tipo de estructura de datos utilizada para almacenar información. Utiliza una función hash para llevar la cuenta de dónde se colocan los datos y permite encontrar rápidamente la información si se conoce su nombre.
P: ¿Cuáles son las dos partes de los datos almacenados en una tabla hash?
R: Los datos almacenados en una tabla hash constan de dos partes: la clave, que es el nombre asociado a los datos, y el valor, que es el dato real que se almacena.
P: ¿Cómo funciona una tabla hash?
R: Una tabla hash funciona utilizando una función hash para averiguar qué número de su nombre debe utilizarse para almacenar los datos en una estructura similar a una matriz formada por muchas cajas o cubos. Esto permite recuperar rápidamente la información independientemente de la cantidad de datos que se hayan introducido en ella.
P: ¿Cuáles son algunos de los usos habituales de las tablas Hash?
R: Las tablas Hash se utilizan habitualmente para matrices asociativas, bases de datos, cachés y conjuntos debido a su capacidad para encontrar información rápidamente sin importar cuántos datos se hayan introducido en ellas.
P: ¿Por qué las Tablas Hash son más rápidas que otras herramientas como los árboles de búsqueda u otras estructuras de búsqueda?
R: Las tablas hash son más rápidas que otras herramientas porque siempre pueden encontrar información a la misma velocidad independientemente de la cantidad de datos que se hayan introducido en ellas, mientras que otras herramientas pueden tardar más en función de la cantidad de datos que haya. Además, también permiten a los usuarios añadir y eliminar pares clave/valor a la misma velocidad.
P: ¿Qué tipo de software informático utiliza tablas hash?
R: Muchos tipos de software informático utilizan las Tablas Hash debido a sus rápidos tiempos de recuperación y a su eficiente capacidad de almacenamiento.
Buscar dentro de la enciclopedia