ArrayList 和 Vector 类是 List 集合的两个典型实现类, ArrayList 和 Vector 都是基于数组实现的 List 类.
ArrayList 和 Vector 类封装了一个动态的, 允许再分配的 Object[] 数组.
如果一开始就知道 ArrayList 和 Vector 需要保存多少个元素, 则可以在创建它们时就指定 initialCapacity 大小. 如果创建空的 ArrayList 和 Vector 不指定 initialCapacity 大小, 则 Object[] 数组的长度默认为10.
当我们每次调用初始化一个空白集合 ArrayList, 它的底层数组其实是空的.当第一次向 ArrayList 集合中添加元素时,
底层数组扩容到10.
下面对 ArrayList 源码进行分析.
/**
* Default initial capacity.
*/
private static final int DEFAULT_CAPACITY = 10;
/**
* Shared empty array instance used for empty instances.
*/
private static final Object[] EMPTY_ELEMENTDATA = {};
/**
* Shared empty array instance used for default sized empty instances. We
* distinguish this from EMPTY_ELEMENTDATA to know how much to inflate when
* first element is added.
*/
private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
/**
* The array buffer into which