为什么java中的HashMap内部使用数组来存储条目对象而不是ArrayList?
答案 0 :(得分:2)
原因很可能是HashMap
需要根据条目数和给定loadFactor
来控制其内部表的大小调整方式。
由于ArrayList
未公开将其内部数组调整为特定大小的方法(HashMap
使用2的大小来优化重组,但ArrayList
将容量乘以1.5) ,它根本不是一个可以考虑的选择。
此外,即使ArrayList
确实以相同的方式增加容量,依赖此内部细节会将这两个类绑定在一起,从而无法在以后更改ArrayList
的内部实现因为它可能会破坏HashMap
或至少使内存效率降低。