在Java中设置Map的最小大小

时间:2016-11-08 16:25:22

标签: java dictionary size

在我的程序中,键值对经常被添加到Map,直到添加了1G对。地图调整大小会减慢进程。如何将最小Map大小设置为,例如1000000007(这是一个素数)?

3 个答案:

答案 0 :(得分:5)

HashMap的构造函数采用地图的初始大小(如果需要,还有加载因子)。

Map<K,V> map = new HashMap<>(1_000_000_007);

答案 1 :(得分:3)

  

如何将最小地图大小设置为,例如1000000007(这是一个素数)?

使用HashMap(int)HashMap(int, float)构造函数。 int参数是容量。

  

HashMap的大小应该是最小化聚类的。

HashMap构造函数的过去和当前实现都将选择容量为2的最小幂(最多2 30 ),该容量大于或等于提供的容量。所以使用素数没有效果。

  

构造函数会阻止map调整大小吗?

HashMaps不会调整大小。

(请注意, size capacity 是不同的。size()方法返回Map中当前条目的数量。您可以“t”设置“大小。”

答案 2 :(得分:2)

你应该注意的事情。 HashMap中的桶数是2的幂(可能不会在将来),2的下一个幂是2 ^ 30。负载因子决定了它应该以什么尺寸增长Map。通常这是0.75。

如果您将容量设置为预期大小,则会;

  • 四舍五入到下一个2的力量
  • 当达到容量* 0.75时,
  • 仍可能会调整大小。
  • 无论如何都限制在2 ^ 30,因为它是阵列大小的最大2倍。
  

构造函数会阻止map调整大小吗?

执行此操作的唯一方法是将所有元素复制到新Map中。这不是自动完成的。