首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Hashcode,等于java中的contract

Hashcode,等于java中的contract
EN

Stack Overflow用户
提问于 2014-09-05 17:35:54
回答 1查看 207关注 0票数 1
代码语言:javascript
复制
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中放置一个元素时,它将检查键的哈希码,如果哈希码相同,它将检查equals.If,两个方法返回的值相同,它将覆盖先前的值。

在我的例子中,两个方法都是(hashcode和equals)返回0和true.So,最后在map.But中必须有一个元素,这里我将大小设为2。

dvance中的reason.Thanks是什么.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-05 17:37:45

你没有重写Object.hashCode,你正在实现你自己的hashcode()方法(注意大写的C)。

一个不错的做法是在重写时始终使用@Override注释。请参阅:

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25682833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档