我们如何决定如何最好地实现hashCode()
方法(假设Eques方法已被正确重写)?
发布于 2018-08-07 09:09:54
一个简短的版本
int result
并指定一个非零值。f
,通过以下equals()
方式计算哈希码c
:
boolean
:calculate (f ? 0 : 1)
;byte
,char
,short
或int
:计算(int)f
;long
:calculate (int)(f ^ (f >>> 32))
;float
:calculate Float.floatToIntBits(f)
;double
:计算Double.doubleToLongBits(f)
并处理返回值,就像每个long值一样;hashCode()
方法的结果或0如果f == null
;3. 将哈希值c
与result
:
result = 37 * result + c
4. 返回 result
发布于 2018-08-07 10:03:31
最好使用Eclipse提供的功能。
https://stackoverflow.com/questions/-100000508
复制相似问题