实例代码
//使用无参构造器创建ArrayList对象
//ArrayList list = new ArrayList();
ArrayList list = new ArrayList(8);
//使用for给 list添加1-10数据
for (int i = 0; i < 10; i++) {
list.add(i);
}
//使用for给 list添加11-15数据
for (int i = 11; i < 15; i++) {
list.add(i);
}
先在此处打一个断点然后开始debug
一、构造函数
首先进入构造函数(创建对象时不指定容器的大小)
首先进入构造函数(创建对象时不指定容器的大小)
new对象是指定数组大小和不指定就这一个区别
二、将基本数据类型装箱为引用数据类型
因为Java的集合框架只能存放引用数据类型,所以会有一个装箱的过程
三、判断此时的容量够不够
把此时数组的长度+1,作为minCapacity作为参数传给ensureCapacityInternal方法判断此时容器容量够不够大
先进入calculateCapacity方法,把此时的elementData数组和minCapacity传进去
在calculateCapacity方法里,如果elementData数组为空,为返回10,否则返回minCapacity
(这就是为什么初始化时不指定长度时,数组长度为10的原因)
然后再把calculateCapacity方法计算出来的minCapacity传进ensureExplicitCapacity中
判断此时容量够不够大,不够通过grow方法进行扩容,够直接返回
四、开始扩容
经过一系列判断后,真正的开始扩容,核心的那个判断是否为空数组的if,如果为空会把空数组容量扩容到10
五、添加数据
一步步返回,然后开始添加数据,然后return ture;