web-dev-qa-db-fra.com

Différence entre un HashMap et un dictionnaire ADT

Quelle est la différence entre une carte de hachage et un dictionnaire ADT. Et quand préférer l'un à l'autre. Pour mon travail de programmation, mon instructeur a demandé à utiliser l’un d’eux, mais je ne vois aucune différence entre les deux. Le programme est censé fonctionner avec un énorme non. de cordes. Aucune suggestion?

59
ashokgelal

En termes de Java, la classe HashMap et la classe Dictionary sont toutes deux implémentations du type de données abstrait "Map". Les types de données abstraits ne sont pas spécifiques à un langage de programmation en particulier, et Map ADT peut également être appelé hachage, dictionnaire ou tableau associatif (d'autres adresses à http://en.wikipedia.org/wiki/Associative_array ). (Notez que nous faisons une distinction entre la classe Dictionary et le dictionnaire ADT.)

La Dictionaryclass a été marquée comme obsolète, il est donc préférable de ne pas l'utiliser.

58
serenader

Ce poste de débordement de pile fait un bon travail en expliquant les principales différences:

Java hashmap vs hashtable

Notez que Hashtable est simplement une implémentation du Dictionary ADT. Notez également que Java considère Dictionary "obsolete" .

Le fait que Hashtable soit synchronisé ne vous rapporte pas beaucoup pour la plupart des utilisations. Utilisez HashMap.

18
Jim Nelson

En Java, HashMap implémente l'interface Map, contrairement au dictionnaire. Cela rend le dictionnaire obsolète (selon la documentation de l'API). C'est-à-dire qu'ils font tous les deux une fonction similaire, vous avez donc raison de dire qu'ils semblent très similaires ... un HashMap est un type de dictionnaire.

Nous vous conseillons cependant d'utiliser HashMap.

8

Map est une interface pour un ADT en Java, la même structure de données générale indépendante du langage pour maintenir les paires <clé, valeur>, et est introduite dans Java 1.2.

Dictionary (et non une implémentation de Map) est une classe abstraite ayant le même objectif que celui présenté précédemment dans JDK 1.0. La seule sous-classe dont il dispose est Hashtable qui implémente Map. Néanmoins, la classe Dictionary est obsolète et vous pouvez l’oublier.

Il existe des différences entre les fonctions membres de Map et Dictionary, mais vous trouverez peut-être plus utile la différence entre HashMap et Hashtable. ici vous pouvez trouver les différences.

0
masec