gpt4 book ai didi

java - 比较hashCode实现

转载 作者:行者123 更新时间:2023-11-30 07:46:54 25 4
gpt4 key购买 nike

我的任务是使用定义在 java 中实现字符串的哈希码。我写了这段代码。

   public int hash(String str) {
int hashValue = 0;
int power;
for (int i = 0; i < str.length(); i++) {
power = (str.length() -1 - i);
hashValue = hashValue + str.charAt(i) * (int) Math.pow(31, power);
}
return hashValue;
}

我发现我的方法的结果与 hashcode() 相同,仅适用于长度小于 8 的字符串。这应该是这样还是我的方法不准确?我已经看到,对于超过 8 个字符的字符串,哈希码可能已更改。

最佳答案

看jdk中的hashCode实现:

public static int hashCode(byte[] value) {
int h = 0;
int length = value.length >> 1;
for (int i = 0; i < length; i++) {
h = 31 * h + getChar(value, i);
}
return h;
}

您的方法可能会产生与本方法相同的结果。其实没关系。它只是一种哈希方法。
请注意,散列方法不需要“准确”。这是一种将任意对象(字符串)简化为 int 的方法。您可以使用任何您想要的方法。

关于java - 比较hashCode实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50261724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com