ArrayList的主要成员变量:
private static final int DEFAULT_CAPACITY = 10;
//数组默认初始容量
private static final Object[] EMPTY_ELEMENTDATA = {};
//定义一个空的数组实例以供其他需要用到空数组的地方调用
private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
//定义一个空数组,跟前面的区别就是,
//这个空数组是用来判断ArrayList第一添加数据的时候要扩容多少。
//默认的构造器情况下返回这个空数组
transient Object[] elementData;
//数据存的地方。
//它的容量就是这个数组的长度。
//同时只要是使用默认构造器,第一次添加数据的时候容量扩容为DEFAULT_CAPACITY = 10
private int size;
//当前数组的长度
size:ArrayList的实际存放数据个数,即我们常说的list长度,size()函数
动态扩容,就是动态改变elementDate.length
,从而达到扩容。
实际的size
一般都小于elementDate.length
。
可以通过trimToSize()
函数将elementDate的容量
改为数据实际的个数
,去除多余的容量。
ArrayList的构造方法有三种:
//带初始容量的初始化
public ArrayList(int initialCapacity) {
if (initialCapacity > 0) {
this.elementData = new Object[initialCapacity];
} else if (initialCapacity == 0) {
this.elementData = EMPTY_ELEMENTDATA;
} else {