Answers:
Python的dict
类是Python文档非正式地称为“ 映射类型 ”的实现。在内部,dict
使用哈希表实现。
Java的HashMap
类是Map
接口的实现。在内部,HashMap
使用哈希表实现。
语法上有一些细微的差异,我相信实现的调整会稍有不同,但是总体而言,它们是完全可以互换的。
字典和地图的想法相似。两者都包含类似的元素
key1:value1, key2:value2 ... and so on
在Java中,Map
实现的方式不同,例如HashMap
或TreeMap
等。put(), get()
操作类似
import java.util.HashMap;
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中的HashMap文档https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html
据我所知(我实际上并不使用Java),字典只是hashmap / hashtable的别称。
可以从http://www.fluffycat.com/Java/HashMaps/获取代码,似乎它们的使用方式非常相似,并带有一些额外的Java样板。
两者之间的区别是,dict
对于哪些数据类型可以用作密钥有更严格的要求。Java将允许任何对象充当键-尽管您应注意确保对象的hashCode()
方法返回反映其内部状态的唯一值。Python需要一些键来使其符合其hashable的定义,该定义指定对象的哈希码在其生命周期内绝不应更改。
hashCode()
方法中还是在Python __hash__()
方法中,您都应尝试返回反映内部状态的唯一值。在Java或Python中,如果您具有可变对象,则它可能不应该是哈希表键,因此从hashCode()
or __hash__()
方法中引发异常是有意义的。