学习:重写hashCode()方法的原则

摘自 Effective Java

1、把某个非零常数值,如17,保存在一个叫result的int类型变量中。

2、对于对象中每一个相关域f,完成以下步骤:

a.为该域计算int类型的散列码c:

  i.如果该域是boolean类型,则计算(f?0:1)。

  ii.byte\char\short\int类型,计算(int)f。

  iii.long类型,计算(int)(f^(f>>>32))。

  iv.float类型,计算Float.floatToIntBits(f)。

  v.double类型,计算Double.doubleToLongBits(f)获得一个long类型,再按long计算。

  vi.如果是一个对象引用,迭代计算hashCode(),如果为null,取0。

  vii.如果是一个数组,则把每一个元素当做单独域来处理。

b.使用下面公式:

  result=37*result+c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值