La différence entre le hashmap et le hashtable est souvent demandée par d'autres. Je vais le résumer ici aujourd'hui.
(I) L'histoire de l'héritage est différente
Classe publique HashTable étend le dictionnaire implémente la classe Mappublic Hashmap étend la carte des outils AbstractMap
Hashtable est hérité de la classe de dictionnaire, et HashMap est une implémentation de l'interface MAP introduite par Java 1.2.
(Ii) une sécurité différente
Hashmap est non synchronisé et le hashtable est synchronisé par défaut, ce qui signifie que le hashtable est en filetage et plusieurs threads peuvent partager un hashtable; Et s'il n'y a pas de synchronisation correcte, plusieurs threads ne peuvent pas partager HashMap. Java 5 fournit plus tard concurrenthashmap, qui remplace le hashtable et a une meilleure évolutivité que le hashtable. Bien sûr, nous pouvons synchroniser le hashmap par:
Map m = collections.Synchronizemap (hashmap);
(Iii) est identique ou similaire dans les valeurs nulles possibles
Hashmap vous permet d'utiliser des valeurs nulles comme clé ou valeur pour une entrée de table. Il n'y a qu'un seul enregistrement dans un hashmap qui peut être une clé vide, mais n'importe quel nombre d'entrées peut être une valeur vide. C'est-à-dire que si aucune clé de recherche n'est trouvée dans le tableau, ou si la clé de recherche est trouvée, mais c'est une valeur vide, alors get () reviendra null; Bien que le hashtable ne fonctionne pas, ni la clé ni la valeur ne permettent des valeurs nulles.
(Iv) Les implémentations internes des deux méthodes de traversée sont différentes
Hashtable et Hashmap utilisent tous deux l'itérateur Iterator. L'itérateur de HashMap est un itérateur de faillite, tandis que l'itérateur de l'énumérateur de HashTable n'est pas un échec. Pour des raisons historiques, HashTable utilise également la méthode d'énumération.
(V) différentes utilisations des valeurs de hachage
Hashtable utilise directement le code de hash de l'objet, tandis que HashMap doit recalculer la valeur de hachage.
(Vi) La taille initiale et la méthode d'expansion du tableau des méthodes de mise en œuvre interne sont différentes.
La taille par défaut du tableau de hachage dans le hachage est de 11, et la méthode d'augmentation est ancien * 2 + 1; La taille par défaut du tableau de hachage dans HashMap est de 16, et elle doit être un exposant de 2.
Merci d'avoir lu, j'espère que cela peut vous aider. Merci pour votre soutien à ce site!