Equivalente a los diccionarios de Python de Java

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 equivalente de Java 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 tablas hash y mapas de hash versus los diccionarios de python?

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

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

Hay algunas diferencias menores en la syntax, y creo que las implementaciones están ajustadas de manera ligeramente diferente, pero en general son completamente intercambiables.

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 , TreeMap etc. put(), get() 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 

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

Una diferencia entre los dos es que dict tiene requisitos más estrictos en cuanto a qué tipos de datos pueden actuar como una 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 que las claves se ajusten a su definición de hashable , que especifica que el código hash del objeto nunca debe cambiar durante su vida útil.

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

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