Professional Documents
Culture Documents
Ciencias de la Computación II
2022
HashTables
• A diferencia de un Direct Address Table, el HashTable tiene
un tamaño menor al número de elementos posibles (U)
• El key, ya no representa la posición del dato, y puede ahora
ser de cualquier tipo.
• Las posiciones de los datos, son calculadas de diferente
forma, ya que ahora ya no existe una asociación directa key-
posición.
HashTables
Ahora que el key puede ser cualquier cosa o tipo de dato, la
relación entre key y valor, es diferente:
Para HASHTABLES:
Keys à Values Ejemplo:
Tabla de passwords
“marial à “1234a”
“jperez à “pwd5”
“vinig”à “palabra”
Cualquier “ograjeda à “xyz”
Cualquier tipo de
tipo de dato valor
HashTables
key (dato)
DATO K Key del dato
H hashvalue o
hashcode
HashTables
DATO
0
1
key(dato)
2
H Hashfunction(k)
m
HashTables
0
U h (k2)
h (k1)
k2
K k1 h (k4)
k4
k3
h (k3)
m
HashTables
k1 k2
h(k1) = h(k2)
Collision
0
U h (k1) = h (k2)
k2
K k1 h (k4)
k4
k3
h (k3)
m
Chaining
Existen varias formas de solucionar el problema de
colisiones, pero una de las más utilizadas es:
chaining.
U k1 k2
k2
K k1 k4 k5 k6
k5
k4
k3
k6
k3
m
¿Cuándo debemos usar un HashTable?
Ejemplos:
Usuario à password
Palabra à traducción
Carnet à estudiante
Placa à automóvil
En Java…
En Java hay dos clases que implementan la funcionalidad de una
tabla hash:
Hashtable<K,V> y HashMap<K,V>
K – type of keys
M – type of values mapped
HashMap<K,V>
Ejemplo usando HashMap<K,V>
1 Declaramos el HashMap
key valor
Ejemplo usando HashMap<K,V>
3 Desplegar la tabla
Ejemplo usando HashMap<K,V>
6 Remover un elemento
Ejemplo usando HashMap<K,V>