HashMap和int作为键

124
我正在尝试构建一个哈希表,其键为整数,值为对象。
我的语法如下:

我正在尝试构建一个哈希表,其键为整数,值为对象。

我的语法是:

HashMap<int, myObject> myMap = new HashMap<int, myObject>();

然而,错误信息显示为 - 在标记"int"之后需要维度,我不明白为什么我需要添加一个维度(即:将int变成数组),因为我只需要将数字作为键来存储。

我该怎么办?


19
HashMap 不能处理原始数据类型,只能处理对象。 - Menno
1
相关的SO问题,但是int是值而不是键。 - cyroxx
5
请使用Integer代替。 - Hot Licks
长话短说,你必须使用 Integer 类型 - 但是你可以添加键值对,就好像它允许你使用 int 类型一样。原始类型不被允许,但是 Integer 类可以处理赋值给 map 的原始类型的值。 - FoxDonut
13个回答

1
请使用以下代码: HashMap<Integer, myObject> myMap = new HashMap<Integer, myObject>();

1

就像列表不接受原始数据一样,映射也不接受原始数据类型作为键或值。如果我们尝试将原始数据类型作为键值对放入映射中,它会进行自动装箱。


2
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Reza Heidari

1
我不明白为什么要添加一个维度(即将int变成数组),因为我只需要将数字作为键存储。
数组也是一个对象,因此HashMap<int[], MyObject>是一种有效的构造方法,它使用int数组作为键。
编译器不知道你想要什么或者需要什么,它只看到一个几乎正确的语言结构,并警告缺少完全正确所需的部分。

2
请注意,数组的哈希值与其内容无关,因此具有相同内容的两个数组可能会哈希到不同的值,从而使其成为非常糟糕的键。 - john16384

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接