www rae mapa linea historico diccionarios diccionario como citar autoridades academicos dictionary data-structures language-agnostic key-value

dictionary - mapa - rae



¿Cuál es la diferencia entre un mapa y un diccionario? (10)

Dos términos para la misma cosa:

  • "Mapa" es utilizado por Java, C ++
  • "Diccionario" es usado por .Net, Python
  • La "matriz asociativa" es usada por JavaScript, PHP

"Mapa" es el término matemático correcto, pero se evita porque tiene un significado diferente en la programación funcional .

Mira here .

Sé que un mapa es una estructura de datos que mapea las claves de los valores. ¿No es un diccionario el mismo? ¿Cuál es la diferencia entre un mapa y un diccionario 1 ?

1. No estoy preguntando cómo se definen en el lenguaje X o Y (que parece ser lo que generalmente la gente está preguntando aquí en SO), quiero saber cuál es su diferencia en teoría.


Estos son dos términos diferentes para el mismo concepto.
Hashtable y HashMap también se refieren al mismo concepto.


La diferencia principal es que un mapa requiere que todas las entradas (valor y par de claves) tengan una clave única. Si se producen colisiones, es decir, cuando una nueva entrada tiene la misma clave que una entrada que ya está en la colección, entonces se requiere el manejo de la colisión.

Por lo general, manejamos las colisiones usando un encadenamiento separado . O Linear Probing .

Un diccionario permite que múltiples entradas se vinculen a la misma clave.

Cuando un mapa ha implementado encadenamiento separado, entonces tiende a parecerse a un diccionario.


Mis 2 centavos.

El diccionario es una clase abstracta en Java, mientras que Map es una interfaz. Dado que Java no es compatible con múltiples herencias, si una clase amplía Dictionary, no puede extender ninguna otra clase.

Por lo tanto, se presentó la interfaz de Mapa.

La clase de diccionario está obsoleta y se prefiere el uso de Map.


No es realmente lo mismo. Los mapas son un subconjunto del diccionario. El diccionario se define aquí como tener las funciones de inserción, eliminación y búsqueda. El mapa utilizado por Java (según this ) es un diccionario con el requisito de que las correlaciones de teclas con los valores estén estrictamente asignadas como una función de uno a uno. Un diccionario puede tener más de un mapa clave para un valor, o un mapa clave para varios valores (como encadenar en una tabla temporal), por ejemplo, búsquedas de hashtag en Twitter.

Como un ejemplo más del "mundo real", buscar una palabra en un diccionario puede darnos varias definiciones de la misma palabra, y cuando encontramos una entrada que nos señala otra entrada (ver otra palabra), varias palabras para la misma lista de definiciones. En el mundo real, los mapas son mucho más amplios, lo que nos permite tener ubicaciones para nombres o nombres de coordenadas, pero también podemos encontrar un vecino más cercano u otros atributos (poblaciones, etc.), en mi humilde opinión podría haber un argumento para una mayor expansión de el tipo de mapa posiblemente tenga implementaciones basadas en gráficos, pero lo mejor sería siempre asumir solo el par clave-valor, especialmente dado que el vecino más cercano y otros atributos del valor podrían ser solo datos miembros del valor.

Los mapas java, a pesar del requisito de uno a uno, pueden implementar algo más como un diccionario generalizado si el valor se generaliza como una colección en sí misma, o si los valores son simplemente referencias a colecciones almacenadas en otro lugar.

Recuerde que los mantenedores de Java no son los que mantienen las definiciones de ADT, y que las decisiones de Java son específicamente para Java.


Otros términos para este concepto que son bastante comunes: array asociativo y hash.


Por lo general, supongo que un mapa está respaldado por una tabla hash; connota una tienda desordenada. Los diccionarios connotan una tienda ordenada.

Hay un diccionario basado en árboles llamado Trie .

En Lisp, podría verse así:

(a (n (d t)) n d )

Que encapsula las palabras:

  • un
  • y
  • hormiga
  • un
  • anuncio

El cruce de la parte superior a la hoja da una palabra.


Sí, son lo mismo, puede agregar "Matriz Asociativa" a la mezcla.

el uso de Hashtable o Hash ofter se refiere a la implementación.


Uno es un término más antiguo para el otro. Normalmente, el término "diccionario" se usaba antes de que el término matemático "mapa" se aplicara. Además, los diccionarios tienden a tener un tipo de cadena clave, pero eso no es 100% cierto en todas partes.


así que en un nivel puramente teórico.

Un diccionario es un valor que se puede usar para ubicar un valor vinculado. Un mapa es un valor que proporciona instrucciones sobre cómo ubicar otros valores

todas las colecciones que permiten acceso no lineal (es decir, solo obtienen primero o son las últimas) son un Mapa, ya que incluso un Array simple tiene un índice que se correlaciona con el valor correcto. Entonces, aunque un diccionario es un tipo de mapa, los mapas son un rango mucho más amplio de funciones posibles.

En la práctica, generalmente es la función de asignación que define el nombre, por lo que una HashMap es una estructura de datos mapeada que utiliza un algoritmo hash para vincular la clave al valor, donde como un diccionario no especifica cómo las claves están vinculadas a un valor por lo que podría almacenarse a través de una lista vinculada, árbol o cualquier otro algoritmo. Desde el final del uso, generalmente no le importa cuál es el algoritmo que solo funcionan, por lo que utiliza un diccionario genérico y solo cambia a una de las otras estructuras solo cuando necesita evitar el tipo de algoritmo.