Java hash(对象…值):如何定义值的hash?
计算Java hash(对象…值):如何定义值的hash?,java,hash,Java,Hash,计算对象时,参数散列是如何组合的。散列(对象…值) 下面是表示它相当于Arrays.hashCode(Object[])。这就打开了一个问题:后者究竟是如何计算哈希的?事实上,列表中int hashCode()的文档中已经给出了答案。(亚西尔亚斯建议) 正如您所指出的,Objects.hash(Object…相当于Arrays.hashCode。这种方法反过来说,它是一种有效的方法。hashCode的列表接口,它必须等效于: int hashCode = 1; for (E e : list
对象时,参数散列是如何组合的。散列(对象…值)
下面是表示它相当于
Arrays.hashCode(Object[])
。这就打开了一个问题:后者究竟是如何计算哈希的?事实上,列表中int hashCode()的文档中已经给出了答案。(亚西尔亚斯建议)
正如您所指出的,
Objects.hash(Object…
相当于Arrays.hashCode
。这种方法反过来说,它是一种有效的方法。hashCode的列表接口,它必须等效于:
int hashCode = 1;
for (E e : list)
hashCode = 31*hashCode + (e==null ? 0 : e.hashCode());
我假设您已经阅读了此方法的代码。。。。那么你在问什么?为什么不继续钻取和?@PeterLawrey这个算法实际上是在javadoc(of List)中指定的。我想他不理解这个。
int hashCode = 1;
for (E e : list)
hashCode = 31*hashCode + (e==null ? 0 : e.hashCode());