2008-11-06 32 views
45

¿Cuál es la diferencia entre un Hash Map y un diccionario ADT. Y cuando preferir uno sobre otro. Para mi asignación de programación, mi instructor me ha pedido que use uno de ellos, pero no veo ninguna diferencia entre ambos. Se supone que el programa funciona con un gran no. de cuerdas. ¿Alguna sugerencia?Diferencia entre un HashMap y un diccionario ADT

Respuesta

46

En términos de Java, tanto en la clase y la clase HashMapDictionary son implementaciones del "mapa" de tipo abstracto de datos. Los tipos de datos abstractos no son específicos de ningún lenguaje de programación, y el ADT del mapa también se puede conocer como Hash, o un diccionario, o un conjunto asociativo (otros al http://en.wikipedia.org/wiki/Associative_array). (Nótese que estamos haciendo una distinción entre la clase Dictionary y el Diccionario de ADT.)

El Dictionary clase ha sido marcada como obsoleta, por lo que es mejor no usarlo.

+6

Tenga en cuenta que existe una diferencia entre el tipo de datos abstractos "Mapa" y la interfaz Java 'Map'. Como se menciona en otras respuestas, la clase legacy 'Dictionary' no implementa la interfaz Java' Map', pero sí la clase 'HashMap'. –

7

En Java, el HashMap implementa la interfaz de Mapa mientras que el Diccionario no. Eso hace que el diccionario sea obsoleto (de acuerdo con los documentos API). Es decir, ambos realizan una función similar, así que tienes razón en que parecen muy similares ... un HashMap es un tipo de diccionario.

Sin embargo, se recomienda utilizar el HashMap.

13

Este desbordamiento de pila de post hace un buen trabajo explicando las diferencias clave:

Java hashmap vs hashtable

Tenga en cuenta que Hashtable es simplemente una aplicación del Diccionario de ADT. También tenga en cuenta que Java considera Dictionary "obsolete".

El hecho de que Hashtable esté sincronizado no le compra mucho para la mayoría de los usos. Use HashMap.

+0

¡Gracias! ¡Es útil! – trillions

0

Mapa es una interfaz para un TAD en Java, la misma estructura de datos independiente del lenguaje general para mantener < clave, valor > pares, y se introduce en Java 1.2.

Diccionario (no una implementación de Mapa) es una clase de Resumen para el mismo propósito presentado anteriormente en JDK 1.0. La única subclase que tiene es Hashtable, que a su vez está implementando Map. Sin embargo, la clase de diccionario ahora está obsoleta y es posible que la olvide.

Existen diferencias entre los miembros de la función de Mapa y Diccionario, sin embargo, es posible que la diferencia entre HashMap y Hashtable sea más útil. here puede encontrar las diferencias.

Cuestiones relacionadas