Objects.hash(Object ... values):如何隐藏值的哈希值?

时间:2016-09-01 15:07:31

标签: java hash

在计算Objects.hash(Object... values)时,参数的哈希值是如何组合的?

以下javadoc表示它等同于Arrays.hashCode(Object[])。这就提出了一个问题:后者究竟如何计算哈希?

2 个答案:

答案 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());