特征

底层结构是数组,查询速度相对性快一些
初始容量为10 private static final int DEFAULT_CAPACITY = 10;

扩容

关于扩容扩容为底层的0.5倍,如图,内部是位移了右移了1,加上本身的值
ArrayList扩容0.5.png
每次扩容需要操作的数据数原本数组长度的2倍加一进行的,扩容所带来的消耗性能是比较大的

移除数据

移除数据是传入的参数是有两种的,一种是下标,一种是对象的值
其中如果传输的是对象的值则会调用fastRemover,先根据其值获得下标再进行删除
fastRemover.png

计数

modCount变量用于记入当前的的值,expectedModCount保存进行时候的会进行的赋值操作
一般我们要作用于修改/删除操作需要移动元素,为了保持其数据不会出现问题而有了modCount,因为其有failFast机制(快速失败),当他们值不一致时会进行报错处理ConcurrentModificationException(并发修改异常)
修改需要校验数据.png