查找特定长度的字符串的最小/最大hashCode值

时间:2016-06-20 19:43:16

标签: java hash range

有没有办法可以使用Java的.hashCode()方法为一定长度的字符串计算最小/最大哈希码?

docs开始,使用的算法是:

s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]

...并返回int,可能是正面的,也可能是负面的。

由于它添加了所有字符来计算哈希值,我尝试通过在由最小/最大字符值组成的相同长度的字符串上运行.hashCode()来查找最小/最大哈希值({ {1}} = 32,space = 126),但我得到的~值超出了我的最小/最大哈希范围。

s

1 个答案:

答案 0 :(得分:2)

如果字符串长度至少为6,则最小可能hashCode为Integer.MIN_VALUE,最大hashCode为Integer.MAX_VALUE

也就是说,有一个长度为6的字符串,其hashCode为Integer.MIN_VALUE,长度为6的字符串的hashCode为Integer.MAX_VALUE

您正在看到整数溢出,这与hashCode的预期一致。

相关问题