JDK 1.8 HashMap源码讲解(1)ArrayList源码

JDK 1.8 HashMap源码讲解(1)ArrayList源码
JDK 1.8 HashMap源码讲解(1)ArrayList源码
看源码先看构造器
JDK 1.8 HashMap源码讲解(1)ArrayList源码
JDK 1.8 HashMap源码讲解(1)ArrayList源码
我们再看看确认内部容量这个方法是干什么的
JDK 1.8 HashMap源码讲解(1)ArrayList源码
JDK 1.8 HashMap源码讲解(1)ArrayList源码
JDK 1.8 HashMap源码讲解(1)ArrayList源码
Add总结: 空参构造器默认是空数组做储存元素,如果您开始新增了,最小容量给默认值
也就是10 ,旧的容量准备扩容1.5倍,但是初始化是空数组,1.5倍还是 0,是小于最小需求的 10 ,所以选择最小需要容量的10 在之后,如果添加数量需要的最小容量是 11 超出当前的容量,那么就真正的扩容1.5倍,就是15了。
扩容主要方法:Arrays.copyOf(原数组,复制新的数组长度)

我们再看看删除
JDK 1.8 HashMap源码讲解(1)ArrayList源码
删除需要稍微思考
首先numMoved
假设已经存入了数量为5
那么size就是5 但是数组容量是10
删除的下标是2
下面是假设的数据
1 2 3 4 5
删除的下标是2
1 2 x 4 5
调用
System.arraycopy(元素组, 开始拷贝的位置, 拷贝的目标位置 ,拷贝目标的位置 , 拷贝的数量);
效果就是
1 2 4 5 5
然后调用
elementData[–size] = null;
结果
1 2 4 5
在list里面,还有一个概念
JDK 1.8 HashMap源码讲解(1)ArrayList源码
迭代器
JDK 1.8 HashMap源码讲解(1)ArrayList源码
看下类
JDK 1.8 HashMap源码讲解(1)ArrayList源码
JDK 1.8 HashMap源码讲解(1)ArrayList源码