几乎总是建议将哈希表的大小加倍(或加倍再加1,即2n + 1)。然而,我没有找到一个好的原因来解释这样做的理由。
为什么要将大小加倍,而不是增加25%,或者增加到下一个素数的大小,或者下k个素数的大小(例如三)?
我已经知道选择初始哈希表大小为质数通常是个好主意,至少如果你的哈希函数使用模数的话,比如通用哈希。 我知道这就是为什么通常建议使用2n + 1而不是2n(例如http://www.concentric.net/~Ttwang/tech/hashsize.htm)。
然而,正如我所说,我没有看到任何真正解释为什么加倍或加倍加一实际上是选择新哈希表大小的好方法,而不是选择其他方法。
(是的,我已经阅读了维基百科关于哈希表的文章:http://en.wikipedia.org/wiki/Hash_table)