JDK 8 中 HashMap 和 ConcurrentHashMap 构造器的差异
在指定
initialCapacity创建HashMap时,需要程序员手动计算出存入预期数量后不触发扩容的容量,即size / loadFactor + 1,构造器会自动向上取最接近的一个2 的整数幂作为容器的初始容量,以保证计算数组下标时可以使用hash & (n - 1),相较于直接取余运算速度更快。在指定
initialCapacity创建ConcurrentHashMap时,只需传入预期存入数量,构造器内部会自动计算不触发扩容的最小 2 的整数幂作为容器的初始容量。JDK 19 开始的版本提供了
HashMap.newHashMap(size)静态方法,可以像ConcurrentHashMap构造器一样自动创建合适容量的容器。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 LDQ's Blog!
