PSR*_*PSR 1 java equals hashcode
public class VO {
public int hashcode()
{
return 0;
}
public boolean equals(Object obj)
{
return true;
}
public static void main(String args[])
{
VO vo1 = new VO();
VO vo2 = new VO();
Map<VO,Integer> map = new HashMap<VO, Integer>();
map.put(vo1, 1);
map.put(vo2, 1);
System.out.println(map.size());
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出是:2
但据我所知,输出为1.
当我在地图中放置一个元素时,它将检查密钥的哈希码,如果该哈希码相同,那么它将检查equals.如果两个方法返回相同,它将覆盖先前的值.
在我的情况下,两个方法都是(hashcode和equals)返回0和true.So最后在map中必须有一个元素.但是这里我的大小为2.
可能是什么原因.谢谢...
Men*_*ena 11
你没有压倒Object.hashCode,你正在实施自己的hashcode()方法(介意大写的C).
一个好的做法是@Override在覆盖时始终使用注释.请参阅:您何时使用Java的@Override注释?为什么?