


Une brève analyse des différences entre Map et HashMap, Hashtable et HashSet en Java
La différence entre HashTable et HashMap
Premièrement, les classes parents héritées sont différentes.
Hashtable hérite de la classe Dictionary et HashMap hérite de la classe AbstractMap. Mais les deux implémentent l’interface Map.
public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, Serializable public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable
Deuxièmement, la sécurité des threads est différente.
Les méthodes de Hashtable sont synchronisées, tandis que les méthodes de HashMap ne sont pas synchronisées par défaut. Dans un environnement simultané multithread, vous pouvez utiliser Hashtable directement sans synchroniser vous-même ses méthodes. Cependant, lorsque vous utilisez HashMap, vous devez ajouter vous-même le traitement de synchronisation.
Troisièmement, faut-il fournir la méthode contain ?
HashMap a supprimé la méthode contain de Hashtable et l'a modifiée en containValue et containKey, car la méthode contain est facile à provoquer. malentendu.
Hashtable conserve trois méthodes : contain, containValue et containKey, parmi lesquelles contain et containValue ont les mêmes fonctions.
Quatrièmement, si la clé et la valeur autorisent les valeurs nulles.
La clé et la valeur sont toutes deux des objets et ne peuvent pas contenir de clés en double, mais peuvent contenir des valeurs en double.
Dans Hashtable, les valeurs nulles ne sont pas autorisées dans la clé et la valeur.
Dans HashMap, null peut être utilisé comme clé, et il n'y a qu'une seule clé de ce type ; il peut y avoir une ou plusieurs clés dont la valeur correspondante est nulle. Lorsque la méthode get() renvoie une valeur nulle, il se peut que la clé n'existe pas dans le HashMap, ou que la valeur correspondant à la clé soit nulle. Par conséquent, dans HashMap, la méthode get() ne peut pas être utilisée pour déterminer si une certaine clé existe dans HashMap, mais la méthode containKey() doit être utilisée pour le déterminer.
Cinquièmement, l'implémentation interne des deux méthodes de traversée est différente.
Hashtable et HashMap utilisent tous deux Iterator. Pour des raisons historiques, Hashtable utilise également l'énumération.
Sixièmement, les valeurs de hachage sont différentes.
L'utilisation des valeurs de hachage est différente. HashTable utilise directement le hashCode de l'objet. Et HashMap recalcule la valeur de hachage.
Septièmement, l'implémentation interne utilise différentes méthodes d'initialisation et d'expansion du tableau.
La taille initiale et la méthode d'expansion des tableaux dans les deux implémentations internes de Hashtable et HashMap. La taille par défaut du tableau de hachage dans HashTable est de 11 et la méthode d'augmentation est old*2 1.
La taille par défaut du tableau de hachage dans HashMap est de 16, et il doit s'agir d'un exposant de 2.
Pour plus d'articles sur les différences entre Map et HashMap, Hashtable et HashSet en Java, veuillez faire attention au site Web PHP chinois !

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Le chargement de classe de Java implique le chargement, la liaison et l'initialisation des classes à l'aide d'un système hiérarchique avec Bootstrap, Extension et Application Classloaders. Le modèle de délégation parent garantit que les classes de base sont chargées en premier, affectant la classe de classe personnalisée LOA

L'article examine la mise en œuvre de la mise en cache à plusieurs niveaux en Java à l'aide de la caféine et du cache de goyave pour améliorer les performances de l'application. Il couvre les avantages de configuration, d'intégration et de performance, ainsi que la gestion de la politique de configuration et d'expulsion le meilleur PRA

L'article discute de l'utilisation de JPA pour la cartographie relationnelle des objets avec des fonctionnalités avancées comme la mise en cache et le chargement paresseux. Il couvre la configuration, la cartographie des entités et les meilleures pratiques pour optimiser les performances tout en mettant en évidence les pièges potentiels. [159 caractères]

L'article discute de l'utilisation de Maven et Gradle pour la gestion de projet Java, la construction de l'automatisation et la résolution de dépendance, en comparant leurs approches et leurs stratégies d'optimisation.
