首先我们先创建一个ArrayList集合,在ArrayList里添加10个数据,使用Dbug来进行调试
//创建ArrayList集合
public class ArrayListDemo02 {
public static void main(String[] args) {
ArrayList list=new ArrayList<>();
list.add("hello");
list.add("hello");
list.add("hello");
list.add("hello");
list.add("hello");
list.add("hello");
list.add("hello");
list.add("hello");
list.add("hello");
list.add("hello");
list.add(1,"李晓龙教育");
String s = list.get(4);
System.out.println(s);
list.remove(5);
list.set(6,"李晓龙");
Iterator iterator=list.iterator();
while (iterator.hasNext()) {
Object next = iterator.next();
System.out.println(next);
}
}
}
我们启动程序
进入add方法
首先会调用一个ensureCapacityInternal()
传入一个size位1的值minCapacity
进行判断,如果元素等于空,则minCapacity=默认容量和最小容量两个其中一个最大的。
接下来调用一个方法ensureExplicitCapacity(mincapacity) 却表显示容量
我们接下来往下走
首先进入到modCount++ 是来进行记录插入数据的次数
继续下一步,进行判断如果最小容量10 -数组长度大于0,那我们就扩容
我们进入扩容方法grow
首先让旧的容量等于素组长度,
让新的容量=旧的容量+(旧的容量右移一位)也就1.5倍。
当然了我们开始旧的容量为0在进行+之后还是0
进入if语句判断新的容量0-最小容量10 小于0
让我们新的容量等min(10)完成整个扩容之后,返回
最后还是回到add方法
public boolean add(E e) {
//这个方法是确保内容量
ensureCapacityInternal(size + 1); // Increments modCount!!
把元素赋给数组,然后size++
elementData[size++] = e;
返回
return true;
}



