众所周知ArrayList内部维护了elementData的Object数组,作为一名合格的程序员,我们不光要知道怎么用它,更要了解它们是怎么实现的,知其根,附上清晰的源码图供大家学习!
大致流程:
传入数据-->获取最小需要容量 -->确认是否需要扩容-->需要则扩容否则直接进行下一步-->扩容大小为原始数据的1.5倍,如果原始容量为0则扩容大小为10--->添加数据返回true
有参构造解析:
解读:
如果传入参数大于0则elementData=指定参数大小的Object的数组
如果等于0则等于空数组
private static final Object[] EMPTY_ELEMENTDATA = {};
否者抛出参数异常
总结:ArrayList维护了一个名为elementData的数组,这就是他的底层结构
ArrayList是线程不安全的,但是效率高
ArrayList也是可以放入null值的
附上源码供大家debug
//使用无参构造器创建 ArrayList 对象
ArrayList list = new ArrayList();
list.add(1);
//使用有参构造器创建 ArrayList 对象
ArrayList list = new ArrayList(1);
作者的话:如果本文对您起到了帮助麻烦随手点个赞,或关注更好哈哈哈,谢谢支持