我最近参加了一次面试,被问到了以下问题。
有两个对象具有相同的哈希码。我将这两个对象插入到一个hashmap中。
hMap.put(a,a); hMap.put(b,b);
where a.hashCode()==b.hashCode()
现在告诉我hashmap中会有多少个对象?
我回答说只有一个对象,因为hashcode是相等的,所以两个对象是相等的,hashmap不允许重复的键。请告诉我我的理解是否正确?
发布于 2011-07-14 18:34:18
可以有两个不同的元素具有相同的哈希码。所以你的答案是不正确的。唯一可以保证的是,如果两个元素有不同的哈希码,那么它们就不同。当两个元素具有相同的哈希码时,Java使用equals来进一步区分。
所以答案是一个或两个对象。
发布于 2011-07-14 18:35:01
hashmap中将有一个或两个对象。
如果两个对象不相等,也就是!a.equals(b),那么两个对象都将被存储。
发布于 2011-07-14 18:35:44
不,hashCode是为了提高效率而进行的初始查找,但是除非使用a.equals(b)==true,否则将有两个条目
https://stackoverflow.com/questions/6691803
复制相似问题