Différence entre HashMap et HashTable

Bien que HashTable et HashMap sont basée sur le hachage et les deux implémentent l’interface Map, la principale différence est la suivante: HashMap n’est pas un thread-safe, alors que HashTable est un thread-safe. Cela signifie que vous ne pouvez pas utiliser HashMap dans une application Java multithread sans synchronisation externe. Une autre différence est que HashMap autorise une clé NULL et des valeurs NULL, mais HashTable n’autorise pas la valeur NULL dans la paire clé/valeur. En plus, la sécurité des threads de HashTable est obtenue à l’aide de la synchronisation interne, ce qui la rend plus lente que HashMap.
 
 

Table de comparaison
HashMapHashTable
SynchronisationHashMap n’est pas synchronisé. Il n’est pas un thread-safe et ne peut pas être partagé entre plusieurs threads sans code de synchronisation approprié.HashTable est synchronisé, est un thread-safe et peut être partagé avec de nombreux threads.
Valeur NullHashMap autorise une clé NULL et plusieurs valeurs NULL.HashTable n’autorise aucune clé ou valeur nulle.
JDK/HéritageHashMap est une nouvelle classe introduite dans JDK 1.2.HashTable est une classe héritée.
RapiditéHashMap est rapide.HashTable est lent.
Rendre synchronisableNous pouvons rendre HashMap synchronisée en appelant ce code
Map map = Collections.synchronizedMap(hashmap);
HashTable est synchronisé en interne et ne peut pas être désynchronisé.
Différence entre HashSet et HashMapDifférence entre HashSet et HashMapHashMap et HashSet font partie du framework Collection, ce qui nous permet de travailler avec une collection d’objets. Le framework Collection a ses propres interfaces…Lire plus  

Définition de HashTable

HashTable est une structure de données qui maintient une paire de clé/valeur. Il n’autorise pas la valeur null pour clés/valeurs. Vous aurez une exception NullPointerException si vous ajoutez une valeur null. HashTable est synchronisé, donc un seul thread peut accéder à un moment donné.

Exemple :

import java.util.Map;
import java.util.Hashtable;

public class ExempleHashtable {

   public static void main(String args[ ]) {
        
       Map<Integer,String> tuto = new Hashtable<Integer,String>();
   
       tuto.put(1, "Java");
       tuto.put(2, "Android");
       tuto.put(3, "Linux");

       //Léve une exception de type NullPointerEcxeption lors de l'exécution
       //tuto.put(4, null);    

       System.out.println(tuto.get(1));
       System.out.println(tuto.get(2));
       System.out.println(tuto.get(3));
    }
}

La sortie

Java
Android
Linux
Différence entre List, Set et Map en javaDifférence entre List, Set et Map en javaList et Set sont des interfaces qui héritent l’interface Collection. Ici, nous allons discuter de la différence entre List, Set et Map en Java.  …Lire plus

 

Définition de HashMap

HashMap est comme Hashtable mais accepte également une paire de clé/valeur. Il autorise la valeur null pour clés/valeurs. Ses performances sont meilleures que celles de HashTable, car il n’est pas synchronisé.

Exemple :

import java.util.HashMap;
import java.util.Map;

public class ExempleHashMap {

    public static void main(String args[]) {
        
        Map<Integer,String> tuto = new HashMap<Integer,String>();
        
        tuto.put(1, "Java");
        tuto.put(2, "Android");
        tuto.put(3, "Linux");
    
        //HashMap autorise clé/valeur = null
        tuto.put(4, null);    
        tuto.put(null,"Mac");
    
        System.out.println(tuto.get(1));
        System.out.println(tuto.get(2));
        System.out.println(tuto.get(3));

    }
}

La sortie

Java
Android
Linux
QCM-JavaQCM Java – Structures de données – tableaux (Arrays)QCM sur Java avec des réponses pour la préparation des entretiens d’embauche, des tests en ligne, aux examens et aux certifications. Ces questions et réponses…Lire plus
Conclusion

Comme indiqué ci-dessus, la différence clé entre HashMap et Hashtable est la synchronisation. Si un thread-safe est nécessaire, alors Hashtable peut être utilisé car toutes ses méthodes sont synchronisées, mais il s’agit d’une classe à héritée. Pour un environnement multi-thread, nous pouvons utiliser ConcurrentHashMap (presque similaire à Hashtable) ou même de rendre le HashMap synchronisé explicitement.
 
 

Partagez cet article

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *