Conceptos y Construcción de Hash Tables en JavaScript

Clase 10 de 29Curso de Estructuras de Datos con JavaScript

Resumen

Aprende cómo una hash table acelera búsquedas y actualizaciones gracias al modelo key–value y a una hash function que genera un address para guardar en buckets. Verás cómo se compara con objetos y arrays en JavaScript, los métodos esenciales (insert, buscar y delete) y qué hacer ante una colisión.

¿Qué es una hash table y en qué se diferencia de un objeto?

Una estructura de datos tipo hash table también usa pares key–value, igual que un objeto. La diferencia clave es un paso extra: una hash function que actúa como “caja negra”. Esta función convierte el key en un número (un hash) y ese número se usa como address para guardar el value en un bucket. Así, acceder al dato es directo y muy rápido.

¿Cómo se nombra en JavaScript, Python y Ruby?

  • JavaScript: objetos o maps. Son similares; falta el paso de hash function.
  • Python: diccionarios.
  • Ruby: hashers.

¿Cuál es la diferencia clave con un objeto?

  • La hash table añade la hash function que calcula el address del bucket.
  • En objetos accedes por key sin ese paso intermedio.
  • Este paso extra permite búsquedas muy rápidas y consistentes.

¿Cómo funciona la hash function para guardar y acceder?

El flujo es simple: tomas el key, lo pasas por la hash function, recibes siempre el mismo hash para ese key y ese hash apunta al bucket donde se guarda el value. Para leer, repites el proceso con el mismo key y obtienes el valor asociado. Esta operación se siente como acceder por índice en un array.

¿Por qué es tan rápida la búsqueda?

  • El hash funciona como un índice de array.
  • Accedes directo al bucket correcto.
  • Evitas recorrer elementos uno a uno.

¿Qué papel cumplen los buckets?

  • Son las “celdas” donde viven los pares key–value.
  • El hash determina qué bucket usar.
  • Permiten guardar y recuperar sin búsquedas lineales.

¿Qué métodos y retos clave debes conocer?

Para manipular una hash table se usan métodos que marcan la pauta de una implementación básica en clase:

¿Qué métodos esenciales existen?

  • insert: agrega elementos a la hash table.
  • buscar: recibe un key y regresa su valor rápidamente.
  • delete: elimina elementos existentes.

¿Qué es una colisión y cómo tratarla?

  • Una colisión ocurre cuando dos keys distintos producen el mismo hash y caen en el mismo bucket.
  • Es normal que suceda; no se puede evitar por completo.
  • Se puede tratar encadenando elementos en ese bucket con una linked list.
  • Al consultar por un key (p. ej., “cerezas”), se regresa el valor correcto incluso si comparte bucket con otro key (p. ej., “mandarinas”).

¿Te gustaría que profundicemos en la implementación con métodos como insert, buscar y delete, o en el manejo de colisiones con linked list? Comparte tus dudas y casos en los comentarios.