在计算Objects.hash(Object... values)
时,参数的哈希值是如何组合的?
以下javadoc表示它等同于Arrays.hashCode(Object[])
。这就提出了一个问题:后者究竟如何计算哈希?
答案 0 :(得分:2)
正如您所指出的,Objects.hash(Object...)
相当于Arrays.hashCode
。反过来,这种方法说它是equivalent to Arrays.asList(arr).hashCode()
。 hashCode的List接口defines a contract,它必须等同于:
int hashCode = 1;
for (E e : list)
hashCode = 31*hashCode + (e==null ? 0 : e.hashCode());
答案 1 :(得分:0)
确实在List的int hashCode()文档中有回答。 (由assylias建议)。
int hashCode = 1;
for (E e : list)
hashCode = 31*hashCode + (e==null ? 0 : e.hashCode());