为什么java中的HashMap内部使用数组来存储Entry对象而不是ArrayList?

时间:2017-03-18 09:31:34

标签: java collections hashmap

为什么java中的HashMap内部使用数组来存储条目对象而不是ArrayList?

1 个答案:

答案 0 :(得分:2)

原因很可能是HashMap需要根据条目数和给定loadFactor来控制其内部表的大小调整方式。

由于ArrayList未公开将其内部数组调整为特定大小的方法(HashMap使用2的大小来优化重组,但ArrayList将容量乘以1.5) ,它根本不是一个可以考虑的选择。

此外,即使ArrayList确实以相同的方式增加容量,依赖此内部细节会将这两个类绑定在一起,从而无法在以后更改ArrayList的内部实现因为它可能会破坏HashMap或至少使内存效率降低。