Está en la página 1de 11

HashMap y HashTable

Java

Métodos de búsqueda
¿Que es un HashMap?

Un HashMap es la implementación de la
interface Map, esta interface es un tipo
de Collection que almacena datos
asociando una llave a un valor, esta
interface sirve para muchas cosas y tiene
ciertas características que la definen.
Características

 No permite key duplicados.


 Cada key tiene que estar asociado a
un valor como máximo.
 Si agregas un key que ya existe
sobrescribe el valor del key anterior.
 Solo permite Object types lo que
quiere decir que no puedes poner un
valor primitivo.
Detalles a tomar en cuenta

 No garantiza que los elementos que


vamos agregando estén ordenados.
 No deberíamos usarla en
aplicaciones multithread porque no
es synchronized.
 El HashMap funciona con el principio
del hashing, trabaja asignando una
ubicación a una key con el método
hashCode() de Java.
¿Qué es un HashTable?

Una Hashtable es una estructura de


datos que utiliza una función hash para
identificar datos mediante una llave o
clave. La función hash transforma una
llave a un valor índice de un arreglo de
elementos. En este caso a una índice
de nuestra Hashtable Java.
Características
 Las tablas hash se suelen implementar sobre vectores
de una dimensión.
 Las tablas hash proveen tiempo constante de
búsqueda promedio O(1), sin importar el número de
elementos en la tabla.
 En casos particularmente malos el tiempo de
búsqueda puede llegar a O(n), es decir, en función
del número de elementos.
 Las tablas hash son más útiles cuando se almacenan
grandes cantidades de información.
 Las tablas hash almacenan la información en
posiciones pseudo-aleatorias, así que el acceso
ordenado a su contenido es bastante lento.
Similitudes y Diferencias

HashMap y HashTable
Similitudes

 Las dos implementan la Interface Map.


 No garatizan ningún orden al momento
de insertar información.
 Trabajan bajo el principio del hashing
Diferencias

 El HashMap solo permite un null key y


cualquier cantidad de null values, en
cambio un Hashtable no permite ningún
null ya sea en key o en value.
 Thread Safe, Hashtable es ideal para
usarlo en aplicaciones multi threaded
(multi hilos), internamente todos sus
métodos son synchronized a diferencia
del HashMap que no es recomendable
en aplicaciones multi threaded.
Diferencias

 Todos los componentes, estructuras de


datos, variables... que no sean syncronized
tienen un mejor performance que las que lo
son, lo que quiere decir que en cuestiones
de rendimiento es mejor utilizar un
HashMap.
 Que es lo que más se utiliza, últimamente se
ha usado más HashMap sobre Hashtable,
eso tiene una razón, Hashtable es legacy
class , y por esa razón es preferible utilizar
HashMap.
Bibliografía

 Usar una Hashtable Java - Línea de Código. (2018). Retrieved from


http://lineadecodigo.com/java/usar-una-hashtable-java/
 HashMap en Java Aprende con el ejemplo - Guru99. (2018). Retrieved from
https://guru99.es/working-with-hashmaps/
 Diferencia entre HashMap y Hashtable Java. (2018). Retrieved from
http://datojava.blogspot.com/2016/08/diferenciaEntreHashmapyHashtable.html