参考文章

ArrayList 源码分析

继承关系

image.png

数据结构

底层由 Object 数组构成

扩容机制

每次扩容 1.5 倍,通过 Arrays._copyOf_(elementData, newCapacity) 将元素拷贝到新数组中

如何实现的 fail-fast 机制

在 Java 集合框架中,很多类都实现了快速失败机制。创建迭代器时,迭代器的属性 expectedModCount 会先缓存当前 ArrayList 的 modCount 在迭代过程中会比较这两个值,如果没有使用迭代器的 add、remove 等方法,或多线程场景下调用时未对同一个迭代器对象加锁,则在迭代中会抛出 ConcurrentModificationException 异常;

遍历方式

可以使用迭代器,或使用效率更高的
for (int i = 0; i < list.size(); i++) {
list.get(i);
}