Java相当于Python词典

时间:2009-10-08 21:44:34

标签: java python hash dictionary

我是Python的长期用户,非常喜欢使用字典的方式。它们非常直观且易于使用。是否有一个好的Java等同于python的字典?我听说有人使用hashmaps和hashtables。有人可以解释使用哈希表和哈希映射与python的词典的相同点和不同点吗?

4 个答案:

答案 0 :(得分:89)

Python的dict类是Python文档非正式地称为“mapping types”的实现。在内部,dict是使用哈希表实现的。

Java的HashMap类是Map接口的实现。在内部,HashMap是使用哈希表实现的。

语法上有一些细微差别,我相信这些实现的调整方式略有不同,但总的来说它们完全可以互换。

答案 1 :(得分:21)

字典和地图的想法是相似的。两者都包含像

这样的元素
key1:value1, key2:value2 ... and so on

在Java中,Map采用了不同的方式,如HashMapTreeMap等。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样板。