标签: java hashmap
我好HashMap以Integer作为关键问题。
HashMap
Integer
当我使用Integer作为地图的关键字时,我得到了不一致的结果。
我看了一些帖子,这些帖子表明,如果我在Integer中使用Hashmap作为键,我需要确保覆盖hashcode Integer方法equals()上课被覆盖了。在Integer类中,方法equals()已被覆盖。现在我如何覆盖{{1}}方法。
Hashmap
hashcode
equals()
答案 0 :(得分:5)
原则上使用Integers作为HashMap的关键是没有问题的。
然而,一个微妙的问题是,就调用equals()而言,包含相同数值的不同类的数量包装不匹配。
例如,如果我这样做:
map.put(3, "Test")
然后尝试检索这样的值:
long x = 1; map.get(x + 2)
将找不到原始值。如果你在不考虑事情的情况下依赖自动装箱,你偶尔会遇到这个问题。
答案 1 :(得分:3)
java.lang.Integer已经覆盖了equals和hashCode,就像内置库中提供的任何值类型一样。你不需要做任何事情。
java.lang.Integer
equals
hashCode