在Java中设置Map的最小大小



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

HashMap的构造函数取map的初始大小(如果需要,还可以取负载因子)

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

我如何设置最小映射大小,例如1000000007(这是一个素数)?

使用HashMap(int)HashMap(int, float)构造函数。"int"为容量。

HashMap的大小应该是prime,以最小化集群。

过去和现在的HashMap构造函数的实现都将选择大于或等于提供容量的2的最小幂(不超过230)的容量。所以使用质数是没有效果的。

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

hashmap不能调整大小


(注意大小容量是不同的东西。size()方法返回Map中当前条目的数量。你不能"设置"大小。)

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

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

  • 四舍五入到2的次幂
  • 当容量* 0.75达到时,
  • 仍可能调整大小。
  • 限制为2^30,因为它是数组大小中2的最大幂。

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

唯一的方法是将所有元素复制到一个新的Map中。

最新更新