如何正确定义对象列表的哈希函数?

ans*_*gri 5 java algorithm hash

我有一个包含对象列表的数据结构,如下所示:

class A {
  private List<Object> list;
}
Run Code Online (Sandbox Code Playgroud)

如何正确定义列表的哈希函数,假设列表中的每个元素都正确hashCode()

Dir*_*irk 13

如果实际List实现完全符合接口,则提供的hashCode实现应该足够:

返回此列表的哈希码值.列表的哈希码被定义为以下计算的结果:

hashCode = 1;
  Iterator i = list.iterator();
  while (i.hasNext()) {
      Object obj = i.next();
      hashCode = 31*hashCode + (obj==null ? 0 : obj.hashCode());
  }
Run Code Online (Sandbox Code Playgroud)

(列出文件)

List接口要求符合实现以equals基于列表的元素提供.因此,他们必须hashCode明确地指定算法