我的hashmap应该有多大?

Gee*_*eek 1 java hashtable data-structures

我事先并不知道我将要存储多少元素Hashmap.那么我的能力有多大HashMap?我应该考虑哪些因素?我想尽可能减少重复过程,因为它真的很贵.

Thi*_*ilo 5

您希望在空间要求和速度之间进行良好的权衡(如果发生许多冲突,则会减少,如果减少空间分配,则会更有可能).

您可以定义一个加载因子,默认可能没问题.

但是你还想避免的是,随着它的增长,必须重建和扩展哈希表.因此,您希望预先确定最大容量.不幸的是,为此,你需要知道你要投入多少钱.

如果你能够浪费一点内存,并且至少有一个合理的上限可以获得多大的内存,你可以将其作为初始容量.如果你保持低于这个容量,它永远不会重新发生.内存要求与容量成线性关系(可能有人有数字).请记住,默认加载因子为0.75时,您需要将容量设置为略高于元素数,因为当表已满75%时,它将扩展表.

如果你真的不知道,只需使用默认值.不是因为它们在你的情况下是完美的,而是因为你没有任何替代设置的基础.

好消息是,即使您设置了次优值,它仍然可以正常工作,只需浪费一点内存和/或CPU周期.

  • "满"是相对的.你可以有loadFactor = 2我想象......(每个桶都是一个开放式列表) (3认同)