<分区>
我发现了很多双重哈希的例子,所有的例子都告诉我当你第二次哈希时你必须使用 %5。
我的问题是为什么是 5?是约定你总是使用 5 还是它是如何工作的?
一个例子:https://www.cs.washington.edu/education/courses/326/00wi/handouts/lecture16/sld025.htm
<分区>
我发现了很多双重哈希的例子,所有的例子都告诉我当你第二次哈希时你必须使用 %5。
我的问题是为什么是 5?是约定你总是使用 5 还是它是如何工作的?
一个例子:https://www.cs.washington.edu/education/courses/326/00wi/handouts/lecture16/sld025.htm
最佳答案
在一个有N个地方的哈希表中,思路是使用两个独立的哈希函数h1(key)和h2(key),然后使用探测序列
h1 % N, (h1 + h2) % N, (h1 + 2*h2) % N, (h1 + 3*h2) % N, ...
你要保证h2和N的最大公约数是1,否则你达不到表中的所有地方。
有几种方案可以实现,例如:
关于java - 双哈希常数 5?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13973558/
相关文章:
javascript - 在 python 和 node.js 中复制 java.lang.String.hashCode() 输出的函数
java - 如果 GetStringUTFChars 返回了一个副本,你应该调用 ReleaseStringUTFChars 吗?
java - quartz 调度程序 : Failed to obtain DB connection from data source
java - 如何通过JavaFX从Mariadb数据库获取数据到表?
php - 如何从 MD5 和 base64_encode 获得相同的结果