================================================================================
[](()2.1 介绍
ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。其继承了 AbstractList,并实现了 List 接口。LinkedList 不仅实现了 List 接口,还实现了 Queue 和 Deque 接口,可以作为队列去使用。
ArrayList 类位于 java.util
包中,使用前需要引入它。
[](()2.2 ArrayList 的构造方法
| 方法 | 描述 |
| — | — |
| ArrayList()
| 无参构造 |
| ArrayList(Collection<? extends E> c)
| 利用其他 Collection 构建 ArrayList |
| ArrayList(int initialCapacity)
| 指定顺序表初始容量 |
示例一:
ArrayList list1 = new ArrayList<>();
示例二:
ArrayList list2 = new ArrayList<>(10);
// 该构造方法就是在构建时就将底层数组大小设置为了10
示例三:
List list = new ArrayList<>();
list.add(1);
list.add(2);
ArrayList list3 = new ArrayList<>(list);
Collection<? extends E> c
只要是具体类型都和 list3 是一样的集合都可以放入转化成 ArrayList
[](()2.3 ArrayList 底层数组的大小
当我们使用 add 方法给 ArrayList 的对象进行尾插时,突然想到了一个问题:既然 ArrayList 的底层是一个数组,那么这个数组有多大呢?
为了解决这个问题,我进行了如下探索
- 跳转到 ArrayList 的定义,我们看到了
elementData
和DEFAULTCAPACITY_EMPTY_ELEMENTDATA
- 跳转到
elementData
的定义,我们可以了解 ArrayList 底层是数组的原因
- 跳转到
DEFAULTCAPACITY_EMPTY_ELEMENTDATA
的定义,初步分析得到这个数组其实是空的