集合的hashCode方法的最佳实现我们如何决定如何最好地实现hashCode()方法(假设Eques方法已被正确重写)?
3 回答

互换的青春
TA贡献1797条经验 获得超6个赞
短版
创建一个 int result
并分配一个 非零价值。 为 每一个领域f
测试 equals()
方法,计算哈希代码。 c
通过: 如果字段f是 boolean
:计算 (f ? 0 : 1)
;如果字段f是 byte
,char
,short
或 int
:计算 (int)f
;如果字段f是 long
:计算 (int)(f ^ (f >>> 32))
;如果字段f是 float
:计算 Float.floatToIntBits(f)
;如果字段f是 double
:计算 Double.doubleToLongBits(f)
并像对待每一个长期价值一样处理回报价值; 如果字段f是 对象
*使用 hashCode()
方法或0如果 f == null
;如果字段f是 列阵
*将每个字段视为单独的元素,并在 递归方式
并将下面描述的值组合起来。 组合散列值 c
带着 result
:result = 37 * result + c
回归 result

慕慕森
TA贡献1856条经验 获得超17个赞
@Overridepublic int hashCode() { return Objects.hashCode(this.firstName, this.lastName);}
com.google.common.base.Objects.hashCode
java.util.Objects.hash
添加回答
举报
0/150
提交
取消