有个问题,是不是equals里有哪几个变量判断,hashcode里面就要重写哪几个变量的代码?

有个问题,是不是equals里有哪几个变量判断,hashcode里面就要重写哪几个变量的代码?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((name == null) ? 0 : name.hashCode());
//      result = prime * result + Float.floatToIntBits(score);
        result = prime * result + stuID;
        return result;
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj.getClass() == Student.class) {
            Student s = (Student)obj;
            return s.getName().equals(name)&&(s.getStuID() == stuID);
        }
        return false;
    }


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

这都是不一定的,看你的项目需求。包括你equals()中判断什么,判断类中的哪几个属性,都是根据项目需求来写的。祝:学习愉快

  • Ma峰 提问者 #1
    那为什么我不注掉那行代码我就完成不了这个判断,而注掉以后就可以呢?
    2018-04-10 22:02:11
  • 好帮手慕雪 回复 提问者 Ma峰 #2
    为不成什么判断?请描述清楚。是报错吗?请确认是不是没有 float score;这个属性才报的错呢。
    2018-04-11 09:51:57
  • Ma峰 提问者 回复 好帮手慕雪 #3
    不是报错,正确的应该是添加重复数据以后,不会显示,也就是注释掉那条语句后,添加的重复数据不会显示,但是不注释掉的话,不论添加什么数据,都会显示出来。
    2018-04-11 16:14:31
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码