hashCode()中的代码看不明白

来源:6-2 学生选课---判断 Set 中课程是否存在

慕粉3620947

2016-07-20 17:01

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((name == null) ? 0 : name.hashCode());
        return result;
    }

这段代码为什么要判断 (name==null) 的值并返回 0 或者 name.hashCode() 再加上 result*31 ?

写回答 关注

1回答

  • 木刻雪原
    2016-07-20 22:31:09
    已采纳

    因为如果name==null 则返回0;那么result就是一个固定值;

    name.hashCode()则是将name值转换为hash值,再加上前面的固定值,这样就造成了,如果name值在不被修改的情况下,return result返回的永远是一个固定值,这样就判定了是否一致;如果name值被修改,那么肯定是不一致的了~~~

    慕粉3620...

    非常感谢!

    2016-07-21 10:45:52

    共 3 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409766 学习 · 4543 问题

查看课程

相似问题