java - example - linkedhashmap vs hashmap




Quelle est la différence entre Hashtable et Dictionary? (5)

Dictionary est une classe de base abstraite de Hashtable . Les deux sont toujours en JDK pour une compatibilité descendante avec l'ancien code. Nous sommes censés utiliser HashMap et d'autres implémentations de l'interface Map introduites dans Java 1.2.

Quelle est la différence entre Dictionary et Hashtable et comment travailler avec la classe Dictionary en Java?


J'ai trouvé une conférence sur les principes de la POO qui contient la réponse que vous cherchez:

http://www.clear.rice.edu/comp202/04-fall/lectures/lec23/

MODIFIER:

Dictionnaire Un thème majeur de l'informatique est le thème du stockage / extraction / suppression: stocker des données quelque part pour qu'elles puissent être récupérées plus tard et mises au rebut si elles ne sont plus nécessaires, le tout de la manière la plus efficace. L'abstraction de ces activités informatiques s'incarne dans la notion de ce qu'on appelle un dictionnaire, exprimé en Java comme une interface comme suit.

Tables de hachage Une table de hachage est une généralisation d'un tableau ordinaire. Lorsque le nombre de clés effectivement stockées est faible par rapport au nombre total de clés possibles, les tables de hachage deviennent une alternative efficace à l'adressage direct d'un tableau, car une table de hachage utilise généralement un tableau proportionnel au nombre de clés réellement stockées. Au lieu d'utiliser directement la clé comme index de tableau, l'index du tableau est calculé à partir de la clé. Avec le hachage, un élément avec la clé k est stocké dans le slot h (k); c'est-à-dire qu'une fonction de hachage h est utilisée pour calculer le créneau à partir de la clé k. h mappe l'ensemble des clés dans les emplacements d'une table de hachage T [0..m-1]: h: U -> {0, 1, ..., m - 1}


Le javadoc pour le dictionnaire a votre réponse.

La classe Dictionary est le parent abstrait d'une classe, telle que Hashtable, qui mappe les clés aux valeurs.

Vous ne travaillez pas directement avec Dictionary , puisqu'il s'agit d'une classe abstract .

Notez également ce qui suit de la même documentation:

NOTE: Cette classe est obsolète. Les nouvelles implémentations doivent implémenter l'interface Map plutôt que d'étendre cette classe.


Selon les javadocs pour le dictionnaire:

NOTE: Cette classe est obsolète. Les nouvelles implémentations doivent implémenter l'interface Map plutôt que d'étendre cette classe.

Hashtable est aussi le millésime de JDK 1.0. Vous devriez préférer l'interface Map et ses implémentations plus modernes: HashMap et TreeMap.


Dictionary est une classe abstraite, superclasse de Hashtable . Vous ne devriez pas utiliser Dictionary car il est obsolète . En ce qui concerne Hashtable, l'avantage qu'il avait sur les autres cartes telles que HashMap était la sécurité des threads, mais avec l'introduction de ConcurrentHashMap depuis Java 1.5, il n'y a pas vraiment de raison de l'utiliser plus longtemps - voir javadoc

Depuis la plate-forme Java 2 v1.2, cette classe a été ajoutée pour implémenter l'interface Map, ce qui en fait un membre du Java Collections Framework. Contrairement aux nouvelles implémentations de collection, Hashtable est synchronisé. Si une implémentation thread-safe n'est pas nécessaire, il est recommandé d'utiliser HashMap à la place de Hashtable. Si une implémentation hautement simultanée thread-safe est souhaitée, il est recommandé d'utiliser ConcurrentHashMap à la place de Hashtable.

En résumé : N'utilisez pas Dictionary ou Hashtable , sauf si vous devez le faire pour des raisons de compatibilité, utilisez HashMap si vous n'avez pas besoin de thread safety, ou ConcurrentHashMap si votre map est utilisée dans un environnement concurrent.







hashtable