集合的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.hashCodejava.util.Objects.hash
添加回答
举报
0/150
提交
取消
