ArrayList 源码探究(一) ArrayList容量
ArrayList实际维护的是一个名为ElementData的数组,ElementData.length为数组的实际容量(所占内存空间),ArrayList实例的size属性只是表征元素的数量。
ArrayList有两个构造函数,一个为无参数的构造函数,另一个是有参数的构造函数。
import java.util.ArrayList;
import java.util.Iterator;
public class 集合类 {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*有参的构造函数*/
ArrayList<Integer> a = new ArrayList<Integer>(0);
System.out.println(a.size()); //输出0
System.out.println(a.get(0)); //抛出异常,因为数组为空
}
}
有参的构造函数源码
public ArrayList(int initialCapacity) {
if (initialCapacity > 0) { //当参数大于0时,新建一个大小为参数的数组
this.elementData = new Object[initialCapacity];
} else if (initialCapacity == 0) { //参数等于0时,数组为{} ,即为空
this.elementData = EMPTY_ELEMENTDATA;
} else {