底层结构和源码分析
1.维护了一个Object类型的数组elementData,transient Object[] elementData;
2.创建ArrayList对象时,如果使用的是无参构造器,则初始elementData为0,第一次添加,设置值为10;再次扩容为原来的1.5倍。
3.如果使用的是指定大小的有参构造器,则初始为给定的容量大小,之后的扩容就是原来的1.5倍
package arraylist底层源码分析;
import java.util.ArrayList;
/**
* test
*
* @author: huanghao
* @createTime: 2022/05/03 23:15
* @description: 底层分析 解读
*/
@SuppressWarnings({"all"})
public class ArrayListSource {
public static void main(String[] args) {
//注意,注意,注意,Idea 默认情况下,Debug 显示的数据是简化后的,如果希望看到完整的数据
// 需要做设置.
//使用无参构造器创建 ArrayList 对象
// ArrayList list = new ArrayList();
ArrayList list = new ArrayList(8);
//使用 for 给 list 集合添加 1-10 数据
for (int i = 1; i <= 10; i++) {
list.add(i);
}
//使用 for 给 list 集合添加 11-15 数据 查看底层扩容
for (int i = 11; i <= 15; i++) {
list.add(i);
}
list.add(100);
list.add(200);
list.add(null);
}
}