(所有的图片的代码来源于JDK1.8中的源码)
可能很多同学听到网上其他人说ArrayList的底层数组elementData的初始化容量是10。
其实并不是!,下图是我们经常初始化ArrayList使用的构造器:
而DEFAULTCAPACITY_EMPTY_ELEMENTDATA也是一个空的数组,请看下面的图示:
说白了就是,每次我们调用初始化一个空白的集合ArrayList,它的底层数组其实是空的。那人们说的初始化容量是10到底是从哪来的呢?
其实是:当我们第一次为ArrayList添加元素的时候,底层数组扩容到了10。
下面我们就分析一下这个过程:
当我们通过ArrayList调用add()方法添加元素的时候,其实底层一共需要调用了4个方法(如果需要扩容的话,则调用5个方法。Math.max()和Arrays.copyOf()不计入其内。)下面先给出源代