Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
嗨,我HashMap对Integeras 键有疑问。
HashMap
Integer
当我 Integer用作地图的键时,我得到的结果不一致。
我读了几篇文章,这些帖子表明,如果我使用Integeras key in Hashmap,我需要确保覆盖和类的hashcode方法Integer都被覆盖。在 Integer 类中,方法equals()已被覆盖。现在我如何覆盖该equals()方法。
Hashmap
hashcode
equals()
使用整数作为 HashMap 的键原则上没有问题。
然而,一个微妙的问题是,就对 equals() 的调用而言,包含相同数值的不同类的数字包装器不匹配。
例如,如果我这样做:
map.put(3, "Test")
然后尝试像这样检索值:
long x = 1; map.get(x + 2)
将找不到原始值。如果你依赖自动装箱而不考虑事情,你偶尔会遇到这个问题。
java.lang.Integer已经覆盖了equalsand hashCode,就像内置库中提供的任何值类型一样。你不需要做任何事情。
java.lang.Integer
equals
hashCode