hashCode怎么重写。。。。。

hashCode怎么重写。。。。。

作业中的hashCode怎么重写,不懂啊

正在回答 回答被采纳积分+1

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

2回答
好帮手慕雪 2019-09-11 18:09:49

 Float.floatToIntBits(score)返回一个int类型大数据。因为hashCode() 返回类型不是int嘛。你写成prime +result都没问题 。不过,一般的,这里不去修改,用它默认的就好。课程是为了说明它的执行流程,所以要演示一下。祝:学习愉快

提问者 亚历山王侯 2019-09-11 17:45:08

除了自动生成hashcode,怎么自己重写??不懂规则

  • 没有什么规则,你们自己定义就好,看需求。例如一共有10个字段,你们认可hashcode只考虑其中七个重要字段就好,那就用7个字段。
    2019-09-11 17:56:05
  • 提问者 亚历山王侯 回复 好帮手慕雪 #2
    public class Student{ //根据需求完成Student类的定义 private int stuld; private String name; private float score; public Student(int id,String name,float score){ setStuid(id); setName(name); setScore(score); } public void setStuid(int id){ this.stuld = id; } public int getStuid(){ return stuld; } public void setName(String name){ this.name = name; } public String getName(){ return name; } public void setScore(float score) { this.score = score; } public float getScore() { return score; } public String toString() { return "[学号:"+getStuid()+",姓名:"+getName()+"成绩:"+getScore()+"]"; } public int hashCode() { final int prime = 31; int result = 1; result = prime * result + stuld; result = prime * result + ((name == null) ? 0 : name.hashCode()); result = prime * result + Float.floatToIntBits(score); return result; } public boolean equals(Object obj) { if(this==obj) { return true; } if(obj.getClass()==Student.class) { Student stu = (Student)obj; return stu.getName().equals(name)&&(stu.getStuid()==stuld); } return false; } }
    2019-09-11 17:58:19
  • 提问者 亚历山王侯 回复 好帮手慕雪 #3
    public int hashCode() { final int prime = 31; int result = 1; result = prime * result + stuld; result = prime * result + ((name == null) ? 0 : name.hashCode()); result = prime * result + Float.floatToIntBits(score); return result; } 像这个hashcode 我使用eclipse自动生成的,如果自己写怎么写?float参数为什么用floatToIntBits(score);??
    2019-09-11 17:59:50
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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