构造器有三个
1.public ArrayList(int initialCapacity){}
给数组的长度初始化,所以一般在知道数据长度的情况下最好赋固定的值,以免不断扩充消耗性能
2.public ArrayList(){}
平时用的最多的,默认创建长度为10的数组
一.ArrayList里面有哪些参数
首先介绍下ArrayList的几个参数
private static final int DEFAULT_CAPACITY = 10;
这个是ArrayList初始化时如果没有为ArrayList长度赋值,则创建长度为10的数组
private static final Object[] EMPTY_ELEMENTDATA = {};
一个空的不可修改的数组
private transient Object[] elementData;
这是一个缓存数组,ArrayList的长度就等于这个缓冲区数组的长度
一般实际存在数据的长度肯定小于这个缓冲区数组的长度
当第一个数据被添加进来的时候如果elementData==EMPTY_ELEMENTDATA (就是上面那个空的数组),就是为空时,elementData的长度被扩充成10
还没搞清楚transient的实际作用,应该是节省性能方面的额
private int size;
ArrayList包含的数据的长度
二.创建一个ArrayList会执行那些东西
执行构造器
构造器有三个
(1)public ArrayList(int initialCapacity){}
创建一个长度为initialCapacity的空数组
(2)public ArrayList() {
super();
this.elementData = EMPTY_ELEMENTDATA;
}
实际就是创建一个空的数组
(3)public ArrayList(Collection<? extends E> c){}
这个待补充
三.我们常用的方法
public boolean add(E e) {
ensureCapacityInternal(size + 1); // Increments modCount!!
首先判断elementData当前数组是不是为空,如果是空的
elementData[size++] = e;
return true;
}
//流程就是
先判斷當前實際長度+1是否大於緩衝區數組的長度
如果大於則執行擴容方法grow(當前長度+1)
擴容分爲三部
1.首先新的容量爲老容量的1.5倍
2.檢驗新的容量是
3.檢驗之後的處理
1.public ArrayList(int initialCapacity){}
给数组的长度初始化,所以一般在知道数据长度的情况下最好赋固定的值,以免不断扩充消耗性能
2.public ArrayList(){}
平时用的最多的,默认创建长度为10的数组
一.ArrayList里面有哪些参数
首先介绍下ArrayList的几个参数
private static final int DEFAULT_CAPACITY = 10;
这个是ArrayList初始化时如果没有为ArrayList长度赋值,则创建长度为10的数组
private static final Object[] EMPTY_ELEMENTDATA = {};
一个空的不可修改的数组
private transient Object[] elementData;
这是一个缓存数组,ArrayList的长度就等于这个缓冲区数组的长度
一般实际存在数据的长度肯定小于这个缓冲区数组的长度
当第一个数据被添加进来的时候如果elementData==EMPTY_ELEMENTDATA (就是上面那个空的数组),就是为空时,elementData的长度被扩充成10
还没搞清楚transient的实际作用,应该是节省性能方面的额
private int size;
ArrayList包含的数据的长度
二.创建一个ArrayList会执行那些东西
执行构造器
构造器有三个
(1)public ArrayList(int initialCapacity){}
创建一个长度为initialCapacity的空数组
(2)public ArrayList() {
super();
this.elementData = EMPTY_ELEMENTDATA;
}
实际就是创建一个空的数组
(3)public ArrayList(Collection<? extends E> c){}
这个待补充
三.我们常用的方法
public boolean add(E e) {
ensureCapacityInternal(size + 1); // Increments modCount!!
首先判断elementData当前数组是不是为空,如果是空的
elementData[size++] = e;
return true;
}
//流程就是
先判斷當前實際長度+1是否大於緩衝區數組的長度
如果大於則執行擴容方法grow(當前長度+1)
擴容分爲三部
1.首先新的容量爲老容量的1.5倍
2.檢驗新的容量是
3.檢驗之後的處理