ArrayList的底层数据结构是一个数组,数组元素的类型为Object类型,对ArrayList的所有操作底层都是基于数组的。
ArrayList的线程安全性:ArrayList在多线程环境下是线程不安全的,ArrayList添加元素分为两步,第一步先在object[size]的位置上存放需要添加的元素,第二步将size的值增加1。由于这个过程在多线程的环境下是不能保证具有原子性的,因此ArrayList在多线程的环境下是线程不安全的。
如果要在多线程环境下使用ArrayList,就要保证它的线程安全性,通常有两种解决办法:第一,使用synchronized关键字;第二,可以用Collections类中的静态方法synchronizedList();对ArrayList进行调用即可。
ArrayList继承AbstractList抽象父类,实现了List接口(规定了List的操作规范)、RandomAccess(可随机访问)、Cloneable(可拷贝)、Serializable(可序列化)。
ArrayList的主要成员变量
private static final int DEFAULT_CAPACITY = 10;
当ArrayList的构造方法中没有显示指出ArrayList的数组长度时,类内部使用默认缺省时对象数组的容量大小,为10。
ArrayList的构造方法
无参构造方法
int类型参数构造方法
Collection<? extends E>类型构造方法
ArrayList的方法
set(int index,E element)、indexOf(Object o)、get(int index)、remove(int index