问答详情
源自:6-2 学生选课---判断 Set 中课程是否存在

hashCode()中的代码看不明白

    @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 ?

提问者:慕粉3620947 2016-07-20 17:01

个回答

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

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

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