Diferencias entre HashMap y HashTable en Java

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());
        }
    }
}
Producción

-------------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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *