代码改变世界

ArrayList实现原理和自动扩容

2022-11-18 16:34  杭伟  阅读(137)  评论(0编辑  收藏  举报

ArrayList在Java集合中的位置,

ArrayList原理:

transient Object[] elementData;

 

ArrayList通过数组来实现。

 默认构造方法会构造一个容量为10的空数组。

 

自动扩容:

 在每次添加新元素(Add方法)时,都会通过grow方法判断当前list的size和list的容量的关系,以10 -> 15(1.5倍长度进行扩容)

创建一个新的长度的数组(第一次扩容是15),并复制原数组,赋给list存储对象。 

copyOf方法最终采用native(操作系统底层)方法(C/C++)来完成。

 

也可以看到:

1,ArrayList不是线程安全的。

2,为什么ArrayList初始容量大小为10? 可能要问作者Josh Bloch, Neal Gafter