type
status
date
slug
summary
tags
category
icon
password
1、类图

2、接口
实现了四个接口,分别是:
java.util.List接口,提供数组添加、删除、修改、迭代遍历操作
java.util.RandomAccess接口,支持快速随机访问 该类实例进行按字段复制。数组支持随机访问, 查询速度快, 增删元素慢; 链表支持顺序访问, 查询速度慢, 增删元素快。所以对应的 ArrayList 查询速度快,LinkedList 查询速度慢, RandomAccess 这个标记接口就是标记能够随机访问元素的集合, 简单来说就是底层是数组实现的集合。https://www.zhihu.com/question/52490586/answer/130786763
java.util.Serializable 接口: 类通过实现 java.io.Serializable 接口以启用其序列化功能
继承 AbstractList 类提供了List框架骨架实现,大幅度减少了遍历迭代操作;
迭代器基本操作
3、属性:
- elementData 属性:元素数组。其中,图中红色空格代表我们已经添加元素,白色空格代表我们并未使用。
- size 属性:数组大小。注意,size 代表的是 ArrayList 已使用 elementData 的元素的数量,对于开发者看到的 #size() 也是该大小。并且,当我们添加新的元素时,恰好其就是元素添加到 elementData 的位置(下标)。当然,我们知道 ArrayList 真正的大小是 elementData 的大小。

4、构造器
ArrayList 有三个构造器:
Ⅰ、ArrayList(int initialCapacity);
构造方法,根据传入的初始化容量,创建 ArrayList 数组。如果我们在使用时,如果预先指到数组大小,一定要使用该构造方法,可以避免数组扩容提升性能,同时也是合理使用内存。代码如下:
- 比较特殊的是,如果初始化容量为 0 时,使用 EMPTY_ELEMENTDATA 空数组。在添加元素的时候,会进行扩容创建需要的数组。
Ⅱ、 ArrayList(Collection<? extends E> c)
ArrayList(Collection<? extends E> c)构造方法,传入集合c,作为ArrayList的elementData;
- Author:atsuc
- URL:https://blog.atsuc.cn/article/blog-source-002
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!