集合源码之ArrayList源码分析

啊哈哈哈,今天来说一下ArrayList的源码。

 

ArrayList是list的一种

在java.util包下

继承了AbstractList类,实现了RandomAccess, Cloneable, java.io.Serializable接口

当我们进这三个接口里面看的时候,发现这三个接口里面竟然一句代码没有。

那么为什么还要实现这三个接口呢?

是要起到一个标记的作用。

这三个接口说明支持随机访问,可以克隆,可序列化

 

还是老样子,看完实现的类和接口之后,我们来看看全局变量。

说明默认初始容量为10

集合源码之ArrayList源码分析_第1张图片

 

elementData: 元素数据数组

size: 集合长度

 

 

 

最大数组长度是 Integer的最大值-8,我们知道Integer的最大值是2的31次方减1

 

 

判断集合是否存在,如果集合的长度为0,集合不存在

判断集合是否包含此元素,如果集合元素的下标大于0,则说明此元素存在

集合源码之ArrayList源码分析_第2张图片

查找集合元素的位置,如果元素存在,返回元素的下标,如果元素不存在,返回-1
集合源码之ArrayList源码分析_第3张图片

返回此元素最后一次出现在集合的位置

集合源码之ArrayList源码分析_第4张图片

集合转数组

集合源码之ArrayList源码分析_第5张图片

根据下标返回元素

集合源码之ArrayList源码分析_第6张图片

修改元素

集合源码之ArrayList源码分析_第7张图片

添加元素

集合源码之ArrayList源码分析_第8张图片

移除某下标的元素

集合源码之ArrayList源码分析_第9张图片

移除某元素

集合源码之ArrayList源码分析_第10张图片

清空集合

集合源码之ArrayList源码分析_第11张图片

添加集合中的全部元素

 

先带大家读到这里,源码里面并没有添加注释,以后有时间添加,我们不见不散

 

 

你可能感兴趣的:(javase)