Cuckoo Hashing:检测哈希函数中冲突的最佳方法是什么?

时间:2016-01-22 19:15:05

标签: hash hashmap

我实现了一个基于cuckoo散列的hashmap。 我的哈希函数获取任何长度的值并返回long类型的键。为了将键匹配到我的数组大小n,我做了键%n。

我正在考虑以下情景:

  • 将带有键A.key的值A插入位置A.key%n
  • 使用键A.key
  • 查找值B.

因此,对于此示例,我获得值A的条目,并且无法识别甚至未插入值B.如果我的哈希函数返回两个不同值的相同键,则会发生这种情况。与不同键但相同位置的碰撞都没有问题。

检测这些碰撞的最佳方法是什么? 如果原始值相等,我是否必须在每次插入或搜索项目时进行检查?

1 个答案:

答案 0 :(得分:0)

与大多数散列方案一样,在cuckoo散列中,散列码告诉您在表中查找相关元素的位置,但期望是在表中存储键和值,以便在返回之前存储的值,您首先检查存储在该插槽的密钥与您正在寻找的密钥。这样,如果您获得两个对象的相同哈希码,则可以确定在该槽位置存储了哪个对象。