当你在双重哈希中与主哈希函数发生冲突时,你使用辅助哈希函数。 但是如果你也与它发生冲突,那么你必须重新散列,所以你将表大小加倍并选择最接近的素数作为新的表大小。 这也会改变您的主要哈希函数吗?例如,如果您的主要哈希函数是 key mod tableSize 并且您的 tableSize 最初是 11,现在是 23,那么它也会改变吗?因为如果哈希函数保持不变,您仍然会在相同的位置发生冲突。
最佳答案
When you have a collision with the primary hash function in double hashing, you use the secondary hash function. But if you have a collision with that as well, then you have to rehash, so you double the table size and choose the nearest prime number as the new table size.
我不认为这是真的。
在双重哈希中,
h(k,i) = h1(k) + i*h2(k)
其中 h(k,i) 是为 key 探测的第 (i+1) 个槽。所以你连续增加 i,这样你就碰到了一个空槽。
你需要重新散列,当负载因子超过特定值时,是的,当重新散列时,主散列函数通常会改变,但我认为没有它你也能过得去([编辑:改变主散列函数]),尽管它会降低性能。
关于java - 双重哈希中的重新哈希也会改变主哈希函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20043934/