Hashcode,在java中等于契约
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());
}
}
我得到的输出是:2
但据我所知,输出是1
当我在map中放置一个元素时,它会检查hashcode中的键,如果hashcode是相同的,那么它会去检查equals。如果两个方法返回相同的值,它将覆盖上一个值
在我的例子中,这两个方法都是(hashcode和equals)返回0和true。最后,地图中必须有一个元素。但在这里,我的尺码是2码
原因可能是什么。谢谢你的提醒
共 (0) 个答案