Maison  >  Article  >  Java  >  Quelle est la différence entre HashMap et Hashtable en Java

Quelle est la différence entre HashMap et Hashtable en Java

青灯夜游
青灯夜游original
2019-03-21 14:46:494385parcourir

Les deux classes HashMap et Hashtable implémentent l'interface java.util.map, mais il existe des différences dans leurs méthodes de travail et leur utilisation. L'article suivant expliquera la différence entre HashMap et Hashtable. J'espère qu'il sera utile à tout le monde.

Quelle est la différence entre HashMap et Hashtable en Java

Exemples HashMap et Hashtable en Java

Jetons d'abord un coup d'œil à HashMap et Hashtable à travers des exemples La différence entre Hashtable.

HashMap et Hashtable stockent les paires clé/valeur dans des tables de hachage. Lors de l'utilisation d'une Hashtable ou d'un HashMap, nous spécifions un objet à utiliser comme clé et la valeur à lier à cette clé. La clé est ensuite hachée et le code de hachage (hachage) résultant est utilisé comme index dans la valeur stockée dans la table.

Code Java :

import java.util.*; 
import java.lang.*; 
import java.io.*; 
  
/* 只有当类是公共的时,类的名称才必须是“main” */
class Ideone 
{ 
    public static void main(String args[]) 
    { 
        //----------hashtable ------------------------- 
        Hashtable<Integer,String> ht=new Hashtable<Integer,String>(); 
        ht.put(100,"Amit"); 
        ht.put(104,"Amit");  
        ht.put(101,"Vijay"); 
        ht.put(102,"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");  // hashmap 允许重复值
        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()); 
        } 
    } 
}

Sortie :

Quelle est la différence entre HashMap et Hashtable en Java

HashMap et Hashtable La différence entre

1. HashMap est asynchrone et non thread-safe. S'il n'y a pas de code de synchronisation correct, il ne peut pas être partagé entre plusieurs threads tandis que Hashtable est synchrone, il est thread-safe. sûr et peut être partagé avec de nombreux threads.

Remarque : Si la synchronisation des threads n'est pas requise, HashMap est généralement meilleur que Hashtable.

2. HashMap autorise une clé nulle et plusieurs valeurs nulles, tandis que Hashtable n'autorise aucune clé ou valeur nulle.

3. Hashmap implémente linkedhashmap pour maintenir l'ordre d'insertion, et treemap trie le mappage selon l'ordre croissant des clés. Et une table de hachage ne garantit aucun type d'ordre ; elle ne conserve pas les mappages dans un ordre spécifique.

4. HashMap hérite de la classe AbstractMap et HashTable hérite de la classe Dictionary.

5. La capacité initiale par défaut de Hashtable est de 11, et chaque fois qu'elle est étendue, la capacité devient la capacité initiale de 2n+1 tandis que la capacité initiale par défaut de HashMap est de 16, et à chaque fois qu'elle est étendue ; , la capacité devient 2 fois la valeur d'origine.

6. Les méthodes de calcul des valeurs de hachage sont différentes

7. L'itérateur de HashMap est un mécanisme à échec rapide, tandis que l'itérateur de Hashtable n'est pas un mécanisme à échec rapide.

Tutoriels vidéo recommandés : "Tutoriel Java"

Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'apprentissage de chacun. Pour un contenu plus passionnant, vous pouvez prêter attention aux colonnes de didacticiels pertinentes du site Web PHP chinois ! ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn