本帖最后由 赵俊杰 于 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;
基本避免了上述"判断不准"的情况的发生。 |