Soy un usuario de Python desde hace mucho tiempo y me gusta mucho la forma en que se utilizan los diccionarios. Son muy intuitivos y fáciles de usar. ¿Existe un buen equivalente de Java a los diccionarios de Python? He oído hablar de personas que utilizan hashmaps y tablas hash. ¿Alguien podría explicar las similitudes y diferencias del uso de tablas hash y mapas hash frente a los diccionarios de Python?
fuente
La idea de diccionario y mapa es similar. Ambos contienen elementos como
En Java,
Map
se implementa de diferentes manerasHashMap
, como ,TreeMap
etc., lasput(), get()
operaciones son similaresConsulte la documentación de HashMap en java8 https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html
fuente
Hasta donde yo sé (en realidad no uso Java), los diccionarios son solo otro nombre para un mapa / tabla hash.
Tomando el código de http://www.fluffycat.com/Java/HashMaps/ parece que se usan de una manera muy similar, con un poco de boiler-plate extra de Java.
fuente
Una diferencia entre los dos es que
dict
tiene requisitos más estrictos en cuanto a qué tipos de datos pueden actuar como clave. Java permitirá que cualquier objeto funcione como clave, aunque debe asegurarse de que elhashCode()
método del objeto devuelva un valor único que refleje su estado interno. Python requiere que las claves se ajusten a su definición de hash , que especifica que el código hash del objeto nunca debe cambiar durante su vida útil.fuente
hashCode()
método Java o en un__hash__()
método Python , debe intentar devolver un valor único que refleje el estado interno. En Java o Python, si tiene un objeto mutable, probablemente no debería ser una clave de tabla hash, por lo que tiene sentido lanzar una excepción de los métodoshashCode()
o__hash__()
.