【发布时间】:2010-06-28 17:40:23
【问题描述】:
我刚刚开始学习哈希表,到目前为止,我知道您将要哈希的对象通过哈希函数,然后使用它返回的索引来获取您想要的相应对象。不过有一点我不明白:
您使用什么结构来存储对象,以便您可以使用散列函数返回的代码快速索引它们?我唯一能想到的就是使用一个数组,但是要处理所有的键,你必须分配一个 9999999999999 大的元素或类似的东西。还是像遍历链表或其他东西并将每个元素中的 ID 与该哈希函数中的键进行比较一样简单?如果是这样,那似乎有点低效,不是吗?
【问题讨论】:
-
在数组方案中,您使用一个哈希函数,该函数返回一个在数组大小范围内的值。因此,您没有 1 万亿个数组元素,您将散列函数限制在合理数量的存储桶中(256?10240?取决于使用情况)。通常每个桶实际上是它自己的链表,所以你可以处理冲突。但这种设计在某种程度上取决于您使用的冲突解决算法。