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

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

	@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下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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