Soy un usuario de Python desde hace mucho tiempo y realmente me gusta la forma en que se usan los diccionarios. Son muy intuitivos y fáciles de usar. ¿Existe un buen equivalente de Java para los diccionarios de Python? He oído hablar de personas que usan hashmaps y hashtables. ¿Alguien podría explicar las similitudes y diferencias de usar tablas de hash y mapas de hash versus los diccionarios de Python?

97
slimbo 9 oct. 2009 a las 01:44

4 respuestas

La mejor respuesta

La clase dict de Python es una implementación de lo que la documentación de Python llama informalmente "tipos de mapeo ". Internamente, dict se implementa utilizando una tabla hash.

La HashMap clase de Java es una clase de Java implementación de la Map. Internamente, HashMap se implementa mediante una tabla hash.

Hay algunas diferencias menores en la sintaxis, y creo que las implementaciones se ajustan de manera ligeramente diferente, pero en general son completamente intercambiables.

110
Daniel Pryden 8 oct. 2009 a las 21:49

Una diferencia entre los dos es que dict tiene requisitos más estrictos sobre qué tipos de datos pueden actuar como clave. Java permitirá que cualquier objeto funcione como una clave, aunque debe asegurarse de que el método hashCode() del objeto devuelva un valor único que refleje su estado interno. Python requiere claves para ajustarse a su definición de hashable, que especifica que el objeto es el código hash nunca debería cambiar durante su vida útil.

5
Tim Clemons 8 oct. 2009 a las 22:16

Por lo que sé (los diccionarios en realidad no uso Java) son solo otro nombre para un hashmap / hashtable.

Tomando el código de http://www.fluffycat.com/Java/HashMaps/ parece se usan de manera muy similar, con un poco de placa extra de caldera java.

5
Tabitha 8 oct. 2009 a las 21:46

La idea de diccionario y mapa es similar. Ambos contienen elementos como

key1:value1, key2:value2 ... and so on

En Java, Map se implementa de diferentes maneras, como HashMap, o TreeMap etc. put(), get() las operaciones son similares

import java.util.HashMap;

Map map = new HashMap();
// Put elements to the map
map.put("Ram", new Double(3434.34));
map.put("Krishna", new Double(123.22));
map.put("Hary", new Double(1378.00));
//to get elements
map.get("Krishna"); # =123.22
map.get("Hary"); # = 1378.00 

Consulte la documentación de HashMap en java8 https://docs.oracle .com / javase / 8 / docs / api / java / util / HashMap.html

32
Sebastian Nielsen 26 jul. 2019 a las 19:57