3—9如何写hashSet方法?按照视频中案例那样写好像不对啊
public class Student{ //根据需求完成Student类的定义 private int stuId; private String name; private float score; public Student(int stuId,String name,float score){ this.setStuId(stuId); this.setName(name); this.setScore(score); } public int getStuId(){ return stuId; } public void setStuId(int stuId){ this.stuId=stuId; } public String getName(){ return name; } public void setName(String name){ this.name=name; } public float getScore(){ return score; } public void setScore(float score){ this.score=score; } public String toString(){ return "[学号:"+this.getStuId()+",姓名:"+this.getName()+",成绩:"+this.getScore()+"]"; } public float hashCode(){ final int prime=31; float result=1; result=prime*result+stuId; result=prime*result+((name==null)?0:name.hashCode()); result=prime*result+score; //result=prime*result+((score=0)?0:score.hashCode()); return result; } public boolean equals(Object obj){ if(this==obj) return true; if(obj.getClass()==Student.class){ Student st=(Student)obj; return st.getStuId()==stuId&&st.getName().equals(name)&&st.getScore()==score; } return false; } }
31
收起
正在回答 回答被采纳积分+1
2回答
好帮手慕珊
2017-06-26 16:55:29
hashCode()方法可以使用eclipse默认生成的方法,也可以自己定义。如果自己定义,具体怎么写对于项目来说要自己研究一套算法,所以对于初学者建议就用eclipse默认生成的即可。你的代码可以这么改,见下面的代码注释:
public int hashCode(){ final int prime=31; int result=1; result=prime*result+stuId; result=prime*result+((name==null)?0:name.hashCode()); result=prime*result+(int)score; //此处将score强制转换为整型就可以了 //result=prime*result+((score=0)?0:score.hashCode()); return result; }
祝学习愉快!
Android零基础入门2018版
- 参与学习 人
- 提交作业 5461 份
- 解答问题 7238 个
此次推出的专题为Android攻城狮培养计划的第一部分语法与界面基础篇,将带大家从0开始学习Android开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星