当项目通过链接存储为链接列表时,搜索如何在散列中工作?

时间:2014-09-25 06:20:42

标签: hashtable hash-collision

在哈希表中处理冲突的一种方法是链接。链接将冲突的项目存储在链接列表中。但是当用户使用键搜索时,哈希表如何识别该项?

3 个答案:

答案 0 :(得分:2)

1)对密钥进行哈希处理以获得哈希桶。

int hashKey = key.hashCode();

2)此存储桶中的所有内容都链接在链接列表中。我们可以迭代它,直到找到一个与键匹配的元素。对于链表中的每个条目,

if (key.equals(entry.getKey()) { return entry.getValue(); }

第二步是简单的线性搜索。

如果这些链不长,那么Hashtables只能正常工作,所以你必须足够大(和选择一个可靠的密钥)以避免/最小化冲突。

答案 1 :(得分:1)

哈希表将您的密钥与链表中与密钥哈希匹配的每个密钥进行比较。

答案 2 :(得分:1)

简短的回答,通过线性搜索链的元素。 哈希函数生成链的head

更准确地说,这在Theta(1 + 1)中起作用,其中l是负载因子,与O(n)的线性正态线性搜索相比更快