ArrayList是实现了List接口的可扩容数组(动态数组),它的内部是基于数组实现的,它的具体定义如下:
public class ArrayList<E> extends AbstractList<E> implements list<E>,
RandomAccess, Cloneable, java.io.Serializable {...}
- ArrayList可以实现所有可选择的列表操作,允许所有的元素,包括空值。ArrayList还提供了内部存储list的方法,它能够完全替代Vector,只有一点例外,ArrayList不是线程安全的容器。
- ArrayList有一个容量的概念,这个数组的容量就是List用来存储元素的容量。
- ArrayList不是线程安全的容器,如果多个线程中至少有两个线程修改了ArrayList的结构的话就会导致线程安全问题,作为替代条件可以使用线程安全的List,应使用:Collections.synchronizedList。
List list = Collections.synchronizedList(new ArrayList(...))
- ArrayList具有fail-fast快速失败机制,能够对ArrayList做出失败检测。当在迭代集合的过程中该集合在结构上发生改变的时候,就有可能会发生fail-fast,及抛出ConcurrentModificationException异常。