本文是我在浏览了常用容器的源码后,对他们的底层数据结构、重要属性、扩容流程,增加元素,获取元素,删除元素的方法进行的一个梳理。
List
ArrayList
1.底层数据结构 + 成员变量
elementData(Object[]):存放数据
size(int):当前集合元素个数
elementData.length(int):当前集合容量
DEFAULT_CAPACITY(int):集合默认最小容量为 10
2.添加元素 + 扩容
扩容:(1).计算当前需要的最小容量,与数组长度比较。
(2).大于就扩容,小于就不扩容。
(3).需要扩容:默认扩容为之前的1.5倍, 如果当前需要的最小容量大于默认扩容后的大小
则扩容为当前需要的最小容量, 最后调用Arrays.copyOf方法将老数组拷
贝到新数组。
添加元素:(4).在最后一个元素后面添加一个元素
3.获取元素
直接通过数组下标返回元素
4.删除元素
(1).要删除的元素为 null
(2).要删除的元素不为 null
删除过程:确定删除元素的下标,然后通过
System.arrayCopy(src数组,srcPos,dest数组,desPos,移动个数)将后部分元素移动上来,
覆盖要删除的元素,完成删除
5.遍历容器
for循环遍历
|