J'ai créé un programme en utilisant java.util.hashtable intégré, mais maintenant je dois résoudre les collisions en utilisant un chaînage séparé. Est-ce possible avec cette implémentation d'une hashtable? Y en a-t-il déjà un qui utilise un chaînage séparé?Java hashtable avec une résolution de collision chaînage séparé?
Répondre
En regardant le source de l'implémentation de Hashtable, on dirait qu'il utilise déjà un chaînage séparé. Si vous regardez la classe Entry<K,V>
à partir de la ligne 901, vous verrez qu'il contient une référence à une autre entrée nommée next
. Si vous regardez alors la méthode put()
, sur la ligne 420 la référence next
est remplie via le constructeur pour être n'importe quel élément précédemment stocké dans ce compartiment.
Notez que vous ne devriez généralement pas être concerné par les détails d'implémentation tels que ceux-ci. Le Java Collections Framework est probablement l'un des frameworks les plus utilisés en Java, et en tant que tel, vous devez supposer que les auteurs ont ajusté les performances pour qu'elles soient aussi bonnes que possible.
Une autre chose que je tiens à souligner est que la classe Hashtable a été remplacée par la classe HashMap
(qui utilise également un chaînage séparé, voir here). La principale différence entre les deux est que toutes les méthodes de Hashtable
sont synchronisées, alors que dans HashMap
elles ne le sont pas. Cela conduit à de meilleures performances dans les situations où vous exécutez dans un environnement à un seul thread (peut-être la raison de cette question?).
Si vous faites ont besoin d'un plan thread-safe mise en œuvre, alors vous devriez envisager soit envelopper un HashMap
normal dans un appel à Collections.synchronizedMap()
, ou en utilisant un ConcurrentHashMap
.
- 1. Java HashMap détecter une collision
- 2. Problème Java Hashtable
- 3. Hashtable avec clé entier en Java
- 4. Hashtable même clé avec une valeur différente ....?
- 5. Différences entre .NET Hashtable, Java Hashtable et HashMap
- 6. Fusion de deux HashTable avec élimination des doublons dans Java
- 7. Itération et suppression de Hashtable dans Java
- 8. Problème avec l'événement "chaînage"
- 9. Carte une référence d'objet avec Hashtable
- 10. envoyer une hashtable glib avec MPI
- 11. UpdateModel avec Dictionary/Hashtable
- 12. Besoin d'aide avec hashTable
- 13. Quelle quantité de mémoire utilise une Hashtable?
- 14. animation avec détection de collision?
- 15. Propriétés de dépendance de chaînage avec MVVM
- 16. Empêcher double Entrée en Hashtable C++
- 17. Java Hashmap/Hashtable et la numérotation
- 18. Hashtable. Nom de l'histoire. Pourquoi pas HashTable?
- 19. Le type Hashtable en C# est implémenté en utilisant le chaînage ou l'adressage ouvert?
- 20. JasperReports avec une résolution différente de 72dpi
- 21. Résolution de paramètres avec une classe personnalisée
- 22. thread séparé pour Java logique de jeu
- 23. Chaînage de routes avec Zend Framework
- 24. Problème avec les jointures de chaînage
- 25. Recherche de mots-clés dans un texte avec une hashtable
- 26. WPF Listview lié avec Hashtable
- 27. Problème de résolution de portée ascendante Java
- 28. Demander Box2d si une collision s'est produite
- 29. mod_rewrite chaînage?
- 30. constructeur de chaînage