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 份
- 解答问题 7235 个
此次推出的专题为Android攻城狮培养计划的第一部分语法与界面基础篇,将带大家从0开始学习Android开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星