我是Python的长期用户,非常喜欢使用字典的方式。它们非常直观且易于使用。是否有一个好的Java等同于python的字典?我听说有人使用hashmaps和hashtables。有人可以解释使用哈希表和哈希映射与python的词典的相同点和不同点吗?
答案 0 :(得分:89)
Python的dict
类是Python文档非正式地称为“mapping types”的实现。在内部,dict
是使用哈希表实现的。
Java的HashMap
类是Map
接口的实现。在内部,HashMap
是使用哈希表实现的。
语法上有一些细微差别,我相信这些实现的调整方式略有不同,但总的来说它们完全可以互换。
答案 1 :(得分:21)
字典和地图的想法是相似的。两者都包含像
这样的元素key1:value1, key2:value2 ... and so on
在Java中,Map
采用了不同的方式,如HashMap
或TreeMap
等。put(), get()
操作类似
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
请参阅java8 https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html
中的HashMap文档答案 2 :(得分:5)
两者之间的一个区别是dict
对哪些数据类型可以作为关键字有更严格的要求。 Java将允许任何对象作为键 - 尽管您应该注意确保对象的hashCode()
方法返回反映其内部状态的唯一值。 Python要求键适合hashable的定义,它指定对象的哈希码在其生命周期内不应改变。
答案 3 :(得分:4)
据我所知(我实际上并不使用java)字典只是hashmap / hashtable的另一个名称。
从http://www.fluffycat.com/Java/HashMaps/抓取代码似乎它们以非常类似的方式使用,带有一些额外的java样板。