arrayList的底层存储采用的是数组

    1. transient Object[] elementData;

    transient表示的是被该关键字修饰的变量是不参与序列化和反序列化的。意味着ArrayList中的数据是可以变化的,因而ArrayList不是线程安全的,从源码中的也可以看出来,所有的方法都没有synchronized修饰

    扩容机制:
    如果使用的是ArrayList的无参构造器,则第一次添加元素的时候会扩增到10个元素大小,超过10以后每次按照1.5倍大小进行扩容
    如果是ArrayList的有参构造器,则使用用户指定的容量大小进行1.5倍的规则进行扩增。

    扩容流程
    _
    image.png

    具体的扩容流程如下
    image.png