黑马程序员技术交流社区
标题:
关于hashCode
[打印本页]
作者:
杨鹏鹏
时间:
2012-8-21 14:30
标题:
关于hashCode
看毕老师的视频 ,
public int hashCode(){
return name.hashCode()+age*27// 这儿的age*27 没想明白,谁能解释一下吗
}
作者:
李知伦
时间:
2012-8-21 15:12
重写hasCode和equals方法来判断集合元素相等的吧,
27应该不是很重要
作者:
赵俊杰
时间:
2012-8-21 15:21
本帖最后由 赵俊杰 于 2012-8-21 15:27 编辑
有没有听到毕老师讲:
有个人,名字hashcode为40,年龄20岁,所以:他名字的hashcode+他的age=60;
还有个人,名字的hashcode为20,年龄40岁,他名字的hashcode+他的age=60;
这样的话,就判断不准了。
而如果让他们的age都乘以一个数字,比如3,那就形成了下面这样的情况:
public int hashCode(){
return name.hashCode()+age*3
}
再来算一下返回值:
第一个人:40+20*3=100;
第二个人:20+40*3=140;
基本避免了上述"判断不准"的情况的发生。
作者:
杜鹏云
时间:
2012-8-21 15:55
主要是为了实现返回的hash()值唯一
作者:
芦曦
时间:
2012-8-21 16:40
因为某些情况的发生会导致哈希值相同,哈希值相同就需要去判断equals,这样就比较低效了,所以为了尽量保证哈希值的唯一性,可以为age添加一个值。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2