gpt4 book ai didi

java - 为什么 ArrayList 的增长速度是 1.5,而 Hashmap 是 2?

转载 作者:太空狗 更新时间:2023-10-29 22:44:29 29 4
gpt4 key购买 nike

根据 Sun Java 实现,在扩展期间,ArrayList 增长到其初始容量的 3/2,而对于 HashMap,扩展率是两倍。这背后的原因是什么?

根据实现,对于HashMap,容量应该总是2的幂。这可能是 HashMap 行为的一个原因。但在那种情况下,问题是,对于 HashMap,为什么容量应该始终是二的幂?

最佳答案

增加 ArrayList 容量的昂贵部分是将支持数组的内容复制到一个新的(更大的)数组。

对于 HashMap,它正在创建一个新的后备数组并将所有映射条目放入到新数组中。而且,容量越大,发生碰撞的风险就越低。这更昂贵并解释了为什么扩展系数更高。 1.5 与 2.0 的原因?我认为这是“最佳实践”或“良好的权衡”。

关于java - 为什么 ArrayList 的增长速度是 1.5,而 Hashmap 是 2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5040753/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com