有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案