Diferencia entre HashMap y Hashtable en Java
Contenido
HashMap y Hashtable, ambos se utilizan para representar un grupo de objetos que están representados en
Veamos el cuadro comparativo que se muestra a continuación para conocer algunas diferencias más entre HashMap y Hashtable.
- Cuadro comparativo
- Definición
- Diferencias clave
- Similitudes
- Conclusión
Cuadro comparativo
Bases para la comparación | HashMap | Tabla de picadillo |
---|---|---|
Implementar / Extender | La clase HashMap implementa la interfaz Map y extiende una clase AbstractMap. | El Hashtable se extiende de la clase Dictionary Legacy, pero está rediseñado y ahora también implementa la interfaz Map. |
Sincronización | HashMap no está sincronizado y, por lo tanto, el objeto HashMap no está protegido por subprocesos. | Hashtable está sincronizado y, por lo tanto, el objeto de Hashtable es seguro para subprocesos. |
Claves / Valor | Una clave puede devolver Null solo una vez, pero un valor puede devolver Null cualquier cantidad de tiempo. | Una clave no puede devolver Null ya que se usa para obtener el código hash que se usará como índice de la tabla hash, ni un valor puede devolver Null. |
Capacidad inicial predeterminada | La capacidad inicial predeterminada de HashMap es 16. | La capacidad inicial predeterminada de Hashtable es 11. |
Atravesar | HashMap es atravesado por Iterator. | Al igual que Map class, Hashtable tampoco admite directamente Iterator para atravesar y, por lo tanto, utiliza Enumerator. |
Definición de HashMap
HashMap es una clase que implementa el Mapa interfaz y extiende el ResumenMapa La clase usa la tabla hash. El objeto de HashMap se refiere a una colección / conjunto de / * K representa la clave y V representa el valor * / class HashMap El primer constructor es un constructor predeterminado que inicializa un objeto vacío de HashMap con una capacidad predeterminada de 16 y una relación de relleno predeterminada de 0,75. El segundo constructor inicializa el mapa hash con el valor de m. El tercer constructor crea un mapa hash con la capacidad inicial correspondiente al valor proporcionado en el argumento "capacidad". El cuarto constructor inicializa el mapa hash con una capacidad y una relación de relleno proporcionada en los parámetros. aprendamos ahora cómo alimentar las entradas en un mapa hash. Hashmap hm = nuevo Hashmap (); hm.put ("Ajay", 275); hm.put ("Vijay", 250); hm.put ("Jonny", 150); hm.put ("Jordan", 200); System.out.ln (hm); / * salida * / {Vijay = 250, Jonny = 150, Ajay = 275, Jordan = 200} En el código anterior, puede ver que creé un objeto HashMap vacío hm con capacidad inicial predeterminada y relación de llenado predeterminada. Luego inserté cuatro entradas en el mapa hash usando el método put (K, V) que asigna la clave al valor. Puede observar que las entradas no se editan en una secuencia en la que las alimenta porque el orden de inserción no es fijo. Ahora, considere un caso en el que ya tiene una entrada Hashtable es una clase que extiende el Diccionario clase que es una clase heredada y está rediseñada para implementar el Mapa interfaz. Hashtable utiliza la tabla hash como su estructura de datos. Hashtable es similar a HashMap ya que aquí también el objeto de Hashtable se refiere a la colección de entradas donde cada entrada es un par de / * K especifica la clave y V especifica el valor asociado con la clave * / class Hashtable En el código anterior, el primer constructor es un constructor predeterminado que crea un objeto vacío de una clase Hashtable, su tamaño predeterminado es 11 y la relación de relleno predeterminada es 0.75. El segundo constructor crea una tabla hash con el tamaño correspondiente al valor proporcionado en el parámetro "tamaño". El tercer constructor crea una tabla hash con un tamaño y una relación de relleno proporcionada en el parámetro. El cuarto constructor inicializa la tabla hash con el valor m. Aprendamos ahora cómo insertar el Hashtable ht = new Hashtable (); ht.put (nuevo hashCode (2), 275); ht.put (nuevo hashCode (12), 250); ht.put (nuevo hashCode (16), 150); ht.put (nuevo hashCode (8), 200); System.out.ln (ht); / * salida * / {12 = 250, 16 = 150,2y = 275, 8 = 200} En el código anterior, creé un objeto vacío de Hashtable e inserté cuatro entradas usando el método put (). Dentro del método put, llamé a hashCode () que calcula y devuelve el valor del código hash que actuará como valor de índice para el objeto de entrada. Como puede ver, no mencioné el tamaño de la tabla hash, por lo que, por defecto, será 11. Aquí también, el orden de inserción no se conserva y, por lo tanto, cuando las entradas ed no aparecen en secuencia, se alimentan. HashMap tiene un mejor rendimiento ya que sus objetos no están sincronizados y varios subprocesos pueden operar en él al mismo tiempo y, por lo tanto, es más rápido que Hashtable.Definición de Hashtable
Similitudes:
Conclusión: