【问题标题】:Initializing size of hash table初始化哈希表的大小
【发布时间】:2012-05-01 04:02:46
【问题描述】:

如果我有一个我知道可以存储 13 个项目的哈希表,我如何将我的表初始化为合适的大小?我在我的书中读到负载系数应该在 2/3 或以下。这是否意味着如果我已经知道在任何时候我的表中的最大项目数将是 13,我可以执行以下操作:

tableSize = nextPrime((numEntries * 3)/2);

我对上述分配的想法是 numEntries 代表数字 13,因为我知道负载因子必须低于 2/3,所以我找到了使比率为 2/3 所需的值。

【问题讨论】:

    标签: initialization size hashtable load-factor


    【解决方案1】:

    您可以将哈希表初始化为new Hashtable(initialSize, loadFactor)

    简单来说,负载因子决定了何时为哈希表分配更多内存

    您必须知道,与数组不同,您不需要在初始化哈希表时指定内存。适当的负载因子有助于减少重复内存分配的开销。

    AFAIK 2/3 的负载因子表示哈希表在 2/3 满时分配内存。

    查看:http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Hashtable.html

    如果您知道哈希表将存储 13 个条目,为什么不初始化它

    new Hashtable(13) 并且不用担心在需要新分配时出现的 loadfactor

    【讨论】:

      猜你喜欢
      • 2016-02-10
      • 1970-01-01
      • 2011-05-16
      • 1970-01-01
      • 2016-10-24
      • 2016-02-07
      • 1970-01-01
      • 2012-03-20
      • 1970-01-01
      相关资源
      最近更新 更多