La comparaison entre HashMap et Hashtable est une question courante dans les entretiens Java, qui est utilisé pour tester si les programmeurs peuvent utiliser correctement les classes de collecte et s'ils peuvent s'adapter à diverses idées pour résoudre des problèmes. Comment fonctionne HashMap, la comparaison de ArrayList avec Vector, et cette question est la question la plus classique sur les cadres de collection Java. HashTable est une classe de collection obsolète qui existe depuis longtemps dans l'API Java. Il a été réécrit dans Java 4 et a implémenté l'interface MAP, il a donc depuis fait partie du cadre de la collection Java. Le hashtable et le hashmap sont assez faciles à poser dans les interviews de Java, et sont même devenus les questions les plus courantes à tester dans les entretiens du cadre de collection, alors n'oubliez pas de préparer cette question avant de participer à des entretiens Java.
Dans cet article, nous verrons non seulement la différence entre le hashmap et le hashtable, mais aussi les similitudes entre eux.
La différence entre hashmap et hashtable
HashMap et Hashtable implémenter les interfaces MAP, mais avant de décider laquelle utiliser, vous devez d'abord comprendre la différence entre eux. Les principales différences sont les suivantes: la sécurité, la synchronisation et la vitesse des filetages.
Quelques termes importants à noter:
1) Sychronisé signifie qu'un seul thread peut modifier le hashtable à la fois. C'est-à-dire que tout fil doit d'abord obtenir le verrou de synchronisation lorsqu'il souhaite mettre à jour le hashtable. D'autres threads doivent attendre la libération du verrouillage de synchronisation avant de pouvoir obtenir le verrouillage de synchronisation et mettre à jour le hashtable à nouveau.
2) L'itérateur de sécurité et d'itérateur est lié. Si un objet de collection crée un iterator ou un listiterator, puis d'autres threads essaient de modifier l'objet de collection "structurellement", une exception ConcurrentModificationException sera lancée. Mais d'autres threads peuvent modifier l'objet de collection via la méthode set () est autorisé car cela ne change pas la collection "structurellement". Cependant, si la structure a été modifiée et que la méthode set () est appelée, une exception illégalargumentException sera lancée.
3) Les changements structurels se réfèrent à la suppression ou à l'insertion d'un élément, ce qui affectera la structure de la carte.
Pouvons-nous faire HashMap Sync?
Hashmap peut être synchronisé via l'énoncé suivant:
Map m = collections.Synchronizemap (hashmap);
en conclusion
Il existe plusieurs différences principales entre le hachage et le hashmap: la sécurité et la vitesse du fil. Utilisez le hashtable uniquement lorsque vous avez besoin d'une sécurité complète du fil et si vous utilisez Java 5 ou plus, veuillez utiliser concurrenthashmap.
Lien original: JavareVisited