HashMap y Hashtable almacenan pares de clave y valor en una tabla hash. Cuando usamos Hashtable o HashMap, especificamos un objeto que se usa como clave y el valor que desea vincular a esa clave. A continuación, se aplica un hash a la clave y el código hash resultante se utiliza como índice en el que se almacena el valor dentro de la tabla. Ahora analicemos con la ayuda de un ejemplo.
Hashmap vs tabla hash
- HashMap no está sincronizado. No es seguro para subprocesos y no se puede compartir entre muchos subprocesos sin el código de sincronización adecuado, mientras que Hashtable está sincronizado. Es seguro para subprocesos y se puede compartir con muchos subprocesos.
- HashMap permite una clave nula y varios valores nulos, mientras que Hashtable no permite ninguna clave o valor nulo.
- Generalmente se prefiere HashMap sobre HashTable si no se necesita la sincronización de subprocesos.
Diferencia entre Hashmap y Hashtable
S. No. | mapa hash | Tabla de picadillo |
---|---|---|
1. | No se sincroniza ningún método. | Todos los métodos están sincronizados. |
2. | Múltiples subprocesos pueden operar simultáneamente y, por lo tanto, el objeto de hashmap no es seguro para subprocesos. | A la vez, solo un subproceso puede operar el objeto de Hashtable. Por lo tanto, es seguro para subprocesos. |
3. | No se requiere que los subprocesos esperen y, por lo tanto, el rendimiento relativo es alto. | Aumenta el tiempo de espera del hilo y, por lo tanto, el rendimiento es bajo. |
4. | Null está permitido tanto para la clave como para el valor. | Null no está permitido tanto para la clave como para el valor. De lo contrario, obtendremos una excepción de puntero nulo. |
5. | Se introduce en la versión 1.2. | Se introduce en la versión 1.0. |
6. | No es legado. | Es un legado. |
Ahora debe preguntarse por qué HashTable no permite nulo y HashMap sí .
La respuesta es sencilla. Para almacenar y recuperar con éxito objetos de una HashTable, los objetos utilizados como claves deben implementar el método hashCode y el método equals. Dado que null no es un objeto, no puede implementar estos métodos. HashMap es una versión avanzada y una mejora de Hashtable. HashMap se creó más tarde.
Ejemplo:
Java
// Java program to demonstrate // HashMap and HashTable import java.util.*; import java.lang.*; import java.io.*; // Name of the class has to be "Main" // only if the class is public class Ideone { public static void main(String args[]) { //----------hashtable ------------------------- Hashtable<Integer,String> ht=new Hashtable<Integer,String>(); ht.put(101," ajay"); ht.put(101,"Vijay"); ht.put(102,"Ravi"); ht.put(103,"Rahul"); System.out.println("-------------Hash table--------------"); for (Map.Entry m:ht.entrySet()) { System.out.println(m.getKey()+" "+m.getValue()); } //----------------hashmap-------------------------------- HashMap<Integer,String> hm=new HashMap<Integer,String>(); hm.put(100,"Amit"); hm.put(104,"Amit"); hm.put(101,"Vijay"); hm.put(102,"Rahul"); System.out.println("-----------Hash map-----------"); for (Map.Entry m:hm.entrySet()) { System.out.println(m.getKey()+" "+m.getValue()); } } }
-------------Hash table-------------- 103 Rahul 102 Ravi 101 Vijay -----------Hash map----------- 100 Amit 101 Vijay 102 Rahul 104 Amit
Este artículo ha sido compilado por Aditya Goel . Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA