Pregunta Java equivalente a los diccionarios de Python


Soy un usuario de Python desde hace mucho tiempo y me gusta mucho la forma en que se usan los diccionarios. Son muy intuitivos y fáciles de usar. ¿Hay un buen Java equivalente a los diccionarios de python? He oído hablar de personas que usan hashmaps y hashtables. ¿Podría alguien explicar las similitudes y diferencias de usar hashtables y hashmaps versus los diccionarios de python?


74
2017-10-08 21:44


origen


Respuestas:


Python dict class es una implementación de lo que la documentación de Python llama informalmentetipos de mapas". Internamente, dict se implementa usando una tabla hash.

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

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


79
2017-10-08 21:49



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

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 

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


17
2017-09-11 03:26



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 clave, aunque debe asegurarse de que el objeto hashCode() método devuelve un valor único que refleja su estado interno. Python requiere claves para adaptarse a su definición de hashable, que especifica que el código hash del objeto nunca debe cambiar durante su vida útil.


5
2017-10-08 22:16



Hasta donde yo sé (en realidad no uso java) los diccionarios son solo otro nombre para hashmap / hashtable.

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


3
2017-10-08 21:46