如何实现动态大小的哈希表?

时间:2012-03-25 08:14:00

标签: data-structures hashtable

我知道哈希表数据结构的基本原理。如果我有一个大小为N的哈希表,我必须尽可能均匀地将我的数据分配到这些N桶中。

但实际上,大多数语言都有内置的哈希表类型。当我使用它们时,我不需要事先知道哈希表的大小。我只是把我想要的东西放进去。例如,在Ruby

h = {}
10000000.times{ |i| h[i]=rand(10000) }

它怎么能这样做?

1 个答案:

答案 0 :(得分:3)

请参阅the Dynamic resizing section of the Hash table article on Wikipedia

通常的方法是使用与a dynamic array相同的逻辑:拥有一定数量的桶,当哈希表中有太多项时,创建一个更大的新哈希表并移动所有项到新的哈希表。

此外,根据哈希表的类型,这个调整大小可能不是正确性所必需的(即使没有调整大小它仍然可以工作),但它肯定是性能所必需的。