Java中与Python字典等效的结构

121 投票
4 回答
103251 浏览
提问于 2025-04-15 14:56

我一直在使用Python,对字典的用法非常喜欢。字典非常直观,使用起来也很简单。那么在Java中有没有和Python字典相似的东西呢?我听说过有人使用哈希表和哈希映射。能不能有人解释一下哈希表和哈希映射与Python字典之间的相似之处和不同之处?

4 个回答

6

这两者之间的一个区别是,dict 对于可以作为键的数据类型要求更严格。Java 允许任何对象作为键使用——不过你需要确保这个对象的 hashCode() 方法返回一个独特的值,这个值应该能反映对象的内部状态。而 Python 则要求键必须符合它对可哈希的定义,这个定义规定对象的哈希值在其生命周期内不能改变。

50

字典和映射的概念是相似的。它们都包含一些元素,比如:

key1:value1, key2:value2 ... and so on

在Java中,Map有不同的实现方式,比如HashMapTreeMap等。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 

可以查看Java 8中HashMap的文档,链接在这里:https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html

141

Python中的dict类可以理解为一种“映射类型”,这个说法是Python文档里非正式的说法。简单来说,dict内部是通过一种叫做哈希表的结构来实现的。

Java中的HashMap类则是实现了Map接口。和Python的dict一样,HashMap内部也是用哈希表来实现的。

这两者在语法上有一些小的不同,我觉得它们的实现方式也稍微有点差别,但总体来说,它们是可以互换使用的。

撰写回答