是的,正好我也在看这里。举个例子吧:
如果用return name.hashCode()+age,;这个代码,如果第一个对象的name.hashCode()值为10,age是20,那么二者的和是30,也就是返回值为30;而第二个对象name.hashCode()值为20,age是10,这样第二个对象的返回值也是30。如此一来这两个不同对象的hash值不就一样了吗,
而如果使用return name.hashCode()+age*39;同样的情况,第一个对象name.hashCode()值为10,age是20 ,那么返回return name.hashCode()+age*39就是返回10+20*39=790.再来第二个对象,name.hashCode()值为20,age是10,那么返回return name.hashCode()+age*39就是返回20+10*39=410.这样计算二者的hash值就不相同了,从而减少了函数返回值相同的可能性。希望对你有帮助。 |