我们知道,Java中标准数组是定长的,在数组被创建之后,它们不能被加上或缩短。ArrayList是List接口的实现类,支持动态增长的数组。下面从源码了解ArrayList的扩容机制。
一、ArrayList的构造函数
ArrayList有三种方式初始化,源码如下。
1.1 无参构造函数
构造一个空列表,长度为0
private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {
};
public ArrayList() {
this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
}
1.2 带初识容量的构造函数
用户自己指定初始容量
public ArrayList(int initialCapacity) {
if (initialCapacity > 0) {
this.elementData = new Object[initialCapacity];
} else if (initialCapacity == 0) {
this.elementData = EMPTY_ELEMENTDATA;
} else {
throw new IllegalArgumentException("Illegal Capacity: &