相关疑难解决方法(0)

为什么String中的Java hashCode()使用31作为乘数?

每Java文档中,哈希代码String对象被计算为:

s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
Run Code Online (Sandbox Code Playgroud)

使用int算术,其中s[i]是 字符串的第i个字符,是字符串n的长度,并^指示取幂.

为什么31用作乘数?

我知道乘数应该是一个相对较大的素数.那么为什么不是29岁,37岁,甚至97岁?

java string algorithm hash

461
推荐指数
11
解决办法
14万
查看次数

为什么我需要覆盖Java中的equals和hashCode方法?

最近我读了这个 Developer Works文档.

该文档是关于定义hashCode()equals()有效和正确的,但我无法弄清楚为什么我们需要覆盖这两种方法.

如何有效地实施这些方法?

java equals hashcode

355
推荐指数
15
解决办法
39万
查看次数

标签 统计

java ×2

algorithm ×1

equals ×1

hash ×1

hashcode ×1

string ×1