¿Cuál es la diferencia entre Hash
y Dictionary
?
Viniendo de un fondo de secuencias de comandos, siento que son similares, pero quería descubrir las diferencias exactas. Buscar en Google no me ayudó mucho.
¿Cuál es la diferencia entre Hash
y Dictionary
?
Viniendo de un fondo de secuencias de comandos, siento que son similares, pero quería descubrir las diferencias exactas. Buscar en Google no me ayudó mucho.
Hash
es una estructura de datos con un nombre extremadamente pobre donde el programador ha confundido la interfaz con la implementación ( y era demasiado vago para escribir el nombre completo, es decir, HashTable
recurrió a una abreviatura Hash
).
Dictionary
es el nombre "correcto" de la interfaz (= el ADT ), es decir, un contenedor asociativo que asigna claves (generalmente únicas) a valores (no necesariamente únicos).
Una tabla hash es una posible implementación de dicho diccionario que proporciona características de acceso bastante buenas (en términos de tiempo de ejecución) y, por lo tanto, a menudo es la implementación predeterminada.
Tal implementación tiene dos propiedades importantes:
(Para que una clave sea hashable significa que podemos calcular un valor numérico a partir de una clave que posteriormente se utiliza como índice en una matriz).
Existen implementaciones alternativas de la estructura de datos del diccionario que imponen un orden en las teclas; esto a menudo se denomina diccionario ordenado (y generalmente se implementa en términos de un árbol de búsqueda, aunque existen otras implementaciones eficientes).
Para resumir: un diccionario es un ADT que asigna claves a valores. Hay varias implementaciones posibles de este ADT, de las cuales la tabla hash es una. Hash
es un nombre inapropiado pero en contexto es equivalente a un diccionario que se implementa en términos de una tabla hash.
unordered_map
a mostrar lo que hacen en lugar de lo que son.Hash
clase con una tabla hash, ya que Ruby 1.9Hash
preserva el orden de inserción mientras que una tabla hash no. Entonces, en Ruby 1.9, el nombreHash
ya ni siquiera refleja la implementación."Diccionario" es el nombre del concepto. Una tabla hash es una posible implementación.
fuente
Un diccionario es el término colectivo dado para cualquier implementación de estructura de datos utilizada para búsquedas / inserciones rápidas. Esto se puede lograr / implementar utilizando una variedad de estructuras de datos como tabla hash, listas de omisión, árbol rb, etc. Una tabla hash es una estructura de datos específica útil para muchos propósitos, incluida la implementación de un diccionario.
fuente
Un diccionario usa una clave para hacer referencia al valor directamente dentro de una matriz asociativa .
es decir
(KEY => VALUE)
Un hash se describe más a menudo como una tabla hash que usa una función hash para calcular la posición en la memoria (o más fácilmente una matriz) donde estará el valor. El hash tomará la CLAVE como entrada y le dará un valor como salida. Luego conecte ese valor a la memoria o al índice de la matriz.
es decir
KEY => HASH FUNCTION => VALUE
Supongo que uno es directo mientras que el otro no. Las funciones de hash pueden no ser perfectas y a veces pueden proporcionar un índice que hace referencia al valor incorrecto. Pero eso se puede corregir.
El mejor lugar para buscar: Wikipedia ( matriz asociativa y tabla hash )
fuente