1
试图在Java中编写我自己的哈希函数。我知道这与java实现的一样,但是想自己测试一下。当我输入不同的值时我碰到碰撞,我不知道为什么。java哈希函数冲突
public static int hashCodeForString(String s) {
int m = 1;
int myhash = 0;
for (int i = 0; i < s.length(); i++, m++){
myhash += s.charAt(i) * Math.pow(31,(s.length() - m));
}
return myhash;
}
'Math.pow(...)'返回一个double。这是否编译? –
编译,是 –
Java String hashCode实现不使用'Math.pow',而是使用int数学运算,并且允许int overflow作为计算的一部分。你的计算没有,这是一个巨大的差异。 –