arrayList的底层存储采用的是数组
transient Object[] elementData;
transient表示的是被该关键字修饰的变量是不参与序列化和反序列化的。意味着ArrayList中的数据是可以变化的,因而ArrayList不是线程安全的,从源码中的也可以看出来,所有的方法都没有synchronized修饰
扩容机制:
如果使用的是ArrayList的无参构造器,则第一次添加元素的时候会扩增到10个元素大小,超过10以后每次按照1.5倍大小进行扩容
如果是ArrayList的有参构造器,则使用用户指定的容量大小进行1.5倍的规则进行扩增。
扩容流程
_
具体的扩容流程如下