1. 线性表(linear list)
在集合框架中,List 是一个接口。从数据结构的角度看,List 就是一个线性表,即 n 个具有相同类型元素的有限序列,在该序列上可以执行增删改查以及变量等操作。
常见的线性表:顺序表、链表、栈、队列……
线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。
线性结构规定:一个元素只能有一个前驱,一个后继。如果有多个前驱或后继,就不是线性结构。
注意:List 是个接口,并不能直接用来实例化。
如果要使用,必须去实例化 List 的实现类。在集合框架中,ArrayList 和 LinkedList 都实现了 List 接口。
- ArrayList ⇒ 顺序表
- LinkedList ⇒ 链表
2. ArrayList 与顺序表
2.1 顺序表的概念
顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。
2.2 ArrayList 简介
在集合框架中,ArrayList 是一个普通的类,实现了 List 接口。
![顺序表结构示意]
注意:
- ArrayList 是以泛型方式实现的,使用时必须要先实例化。
- ArrayList 底层是一段连续的空间,并且可以动态扩容,是一个动态类型的顺序表。
2.3 ArrayList 的构造
| 方法 | 解释 |
|---|---|
| ArrayList() | 无参构造 |
| ArrayList(int initialCapacity) | 指定顺序表初始容量 |
public static void main(String[] args) {
List<Integer> l1 = new ArrayList<>(); // 实例化一个空表,推荐写法
List<Integer> l2 = new ArrayList<>(10); // 实例化一个初始容量为 10 的空表
List<Integer> l3 = new ArrayList<>(l2); // 实例化出的 l3,与 l2 中的元素一致
}
2.4 ArrayList 常见操作
ArrayList 虽然提供的方法比较多,但是常用方法如下所示,需要用到其他方法时,可以查看 JAVA 帮助手册。
| 方法 | 解释 |
|---|---|
| boolean add(E e) |


