关闭页面特效

Java 集合类型之ArrayList 源码解析

1|0层次结构


1|1顶层层次结构


  ArrayList实际上是继承了AbstractList,同事实现了List,RandomAccess,Clonable,Serializable序列化接口。

1|2AbstractList


  AbstractList抽象类继承了AbstractCollection并实现了List接口,其中AbstractCollection实现了Collection接口。

 

2|0ArrayList源码分析


2|1属性


1 private static final int DEFAULT_CAPACITY = 10; //默认容量
private static final Object[] EMPTY_ELEMENTDATA = {}; //共享空数组实例为空的实例们使用。
//为默认的空实例准备的共享的空数组实例。我们区别于EMPTY_ELEMENTDATA以辨别膨胀多少当第一个元素被添加的时候。 private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
//这个数组缓冲区进入数组的元素被存储。 //数组的容积是数组缓冲区的长度。 //任何空的数组带数组元素等于DEFAULTCAPACITY_EMPTY_ELEMENTDATA会被展开到DEFAULT_CAPACITY当数组当中第一个元素被添加进去。 transient Object[] elementData;//非私有被简化嵌套类的访问
private int size;//数组的大小(有多少元素它包含)

2|2方法


//构造一个空的ArrayList带10的初始化长度。 public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; }

 

/* 构造一个list包含集合选择的一些元素,在这个队列当中,它们被集合的迭代器返回。 param c 这个集合谁的元素被放入list当中 throws NullPointerException 如果指定的集合为空 */ public ArrayList(Collection<? extends E> c) { elementData = c.toArray(); if ((size = elementData.length) != 0) { // c.toArray(错误的)不返回数组对象。 // (see e.g. https://bugs.openjdk.java.net/browse/JDK-6260652) if (elementData.getClass() != Object[].class) elementData = Arrays.copyOf(elementData, size, Object[].class); } else { //被替代为空数组 this.elementData = EMPTY_ELEMENTDATA; } }

 


__EOF__

作  者ღKawaii
出  处https://www.cnblogs.com/kmsfan/p/12698028.html
关于博主:一个普通的小码农,为了梦想奋斗
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!

posted @   yangliwen  阅读(333)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
历史上的今天:
2015-04-14 Kooboo CMS 之TextContent详解
0
0
关注
跳至底部
document.getElementById("homeTopTitle").innerText="ღKawaii";
点击右上角即可分享
微信分享提示