package com.hspedu.collection_;
import java.util.ArrayList;
@SuppressWarnings({"all"})
public class Course510 {
public static void main(String[] args) {
// ArrayList底层源码1
/*
* 1、ArrayList()底层创建了空的 Object[] elementDate; 存放数据
* 2、add方法会先确定容量空间,是否需要扩容,然后再添加元素,minCapacity初始为10(无参扩容)
* int newCapacity = oldCapacity + (oldCapacity >> 1); 1.5倍扩容
* elementData = Arrays.copyOf(elementData, newCapacity); 实现扩容
* modCount记录集合被修改的次数,防止多线程出现异常
* */
ArrayList list = new ArrayList();
for (int i = 1; i <= 10; i++) {
list.add(i);
}
for (int i = 11; i <= 15; i++) {
list.add(i);
}
list.add(100);
list.add(200);
list.add(null);
}
}
package com.hspedu.collection_;
import java.util.ArrayList;
@SuppressWarnings({"all"})
public class Course511 {
public static void main(String[] args) {
// ArrayList底层源码2
/*
* ArrayList(int)创建指定大小的 elementData;
* public ArrayList(int initialCapacity) {...}
* this.elementData = new Object[initialCapacity];
* 当ArrayList集合的容量不够添加时,扩容基于当前容量大小的1.5倍进行扩容,如 8->12->18->...
*
* */
ArrayList list = new ArrayList(8);
for (int i = 1; i <= 10; i++) {
list.add(i);
}
for (int i = 11; i <= 15; i++) {
list.add(i);
}
list.add(100);
list.add(200);
list.add(null);
}
}