李天一 发表于 2013-8-16 14:34:03

[hashcode & equals之5重天]覆写hashcode方法

李刚 发表于 2013-8-16 14:42:27

1. 把某个非零常数值,例如17,保存在int变量result中;2. 对于对象中每一个关键域f(指equals方法中考虑的每一个域):3, boolean型,计算(f? 0 : 1);4. byte,char,short型,计算(int);5. long型,计算(int)(f ^(f>>>32));6. float型,计算Float.floatToIntBits(afloat);7. double型,计算Double.doubleToLongBits(adouble)得到一个long,再执行;8. 对象引用,递归调用它的hashCode方法;9. 数组域,对其中每个元素调用它的hashCode方法。10. 将上面计算得到的散列码保存到int变量c,然后执行result=37*result+c;11. 返回result。
页: [1]
查看完整版本: [hashcode & equals之5重天]覆写hashcode方法