3—9如何写hashSet方法?按照视频中案例那样写好像不对啊

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;
}
   
}


正在回答 回答被采纳积分+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;
}

祝学习愉快!

好帮手慕珊 2017-06-25 17:56:04

hashCode方法吧,返回值是int类型,不是float类型。祝学习愉快!

  • 提问者 kris1992 #1
    我开始是写的int,然后报错了。里面不是还有score是float类型的吗?它的语句怎么写?是跟int类型的stuId一样吗?
    2017-06-25 17:59:09
  • 提问者 kris1992 #2
    老师,我问的是里面的语法怎么写?你的这个回答没有解决我的问题,可否仔细回答下
    2017-06-25 18:26:07
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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