底层数据结构
ArrayList的底层数据结构是数组
transient Object[] elementData;//底层数据结构,数组
private int size;//已存放数量
这里先说一下ArrayList中大量使用的复制数组的方法,该方法是一个native方法,jvm进行了特殊的优化,比Java for循环复制效率高
public static native void arraycopy(Object src, // 源数组
int srcPos, //开始复制的位置
Object dest, //目标数组
int destPos, //复制到目标数组的开始位置
int length); //复制的个数
构造函数
使用无参构造函数时,底层数组指向默认的空数组
public ArrayList() {
this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;//{}
}
按容量初始化数组
public ArrayList(int initialCapacity) {
if (initialCapacity > 0) {
this.elementData = new Object[initialCapacity];
} else if (initialCapacity == 0) {
this.elementData = EMPTY_ELEMENTDATA;
} else {
throw new IllegalArgumentException("