-4

嗨,我HashMapIntegeras 键有疑问。

当我 Integer用作地图的键时,我得到的结果不一致。

我读了几篇文章,这些帖子表明,如果我使用Integeras key in Hashmap,我需要确保覆盖和类的hashcode方法Integer都被覆盖。在 Integer 类中,方法equals()已被覆盖。现在我如何覆盖该equals()方法。

4

2 回答 2

5

使用整数作为 HashMap 的键原则上没有问题。

然而,一个微妙的问题是,就对 equals() 的调用而言,包含相同数值的不同类的数字包装器不匹配。

例如,如果我这样做:

map.put(3, "Test")

然后尝试像这样检索值:

long x = 1;
map.get(x + 2)

将找不到原始值。如果你依赖自动装箱而不考虑事情,你偶尔会遇到这个问题。

于 2012-11-02T02:25:37.980 回答
3

java.lang.Integer已经覆盖了equalsand hashCode,就像内置库中提供的任何值类型一样。你不需要做任何事情。

于 2012-11-02T01:01:38.883 回答