一、Java 集合框架
Java 集合框架是 Java 中用于存储和操作一组对象的体系,核心分为 Collection(单列集合)和 Map(双列集合)。
核心接口与分类
- Collection(单列集合):是所有单列集合的根接口,定义了集合的基本操作(增删改查、遍历等)。子接口包括 List(有序可重复)、Set(无序不可重复)、Queue(队列)。
- Map(双列集合):存储键值对(Key-Value),Key 唯一、Value 可重复。子接口包括 SortedMap(键有序)。
LinkedList 简介
- 实现的接口
- 实现了 List 接口(具备列表的增删改查能力);
- 实现了 Deque 接口(同时具备双端队列的特性,可作为栈、队列使用)。
- 核心特性
- 结构:基于双向链表,每个节点存储前驱、后继节点的引用,无容量限制;
- 访问效率:随机访问(通过索引 get(i))效率低(时间复杂度 O(n)),需遍历链表;
- 增删效率:在链表两端 / 已知节点附近增删元素效率高(时间复杂度 O(1));
- 线程不安全:多线程环境下需手动同步。
List 接口
这是 LinkedList 作为列表的核心接口,它继承自 Collection 接口,定义了有序集合的基础行为。
- 核心约定:元素有序可重复,支持通过索引访问(如 get(int index)、set(int index, E element));支持增删改查的全量列表操作,例如 add(E e)、remove(int index)、contains(Object o) 等。
- 对 LinkedList 的影响:LinkedList 必须实现索引相关的方法,但由于其底层是双向链表,索引访问需要遍历链表(时间复杂度 O(n)),这也是它和 ArrayList(数组实现,索引访问 O(1))的核心区别。
Deque 接口
这是 LinkedList 区别于 ArrayList 的关键接口,它是双端队列的核心接口。
- 核心约定:允许在队列两端进行元素的插入、删除和获取操作,同时兼容队列和栈的行为。
- 队列行为:遵循先进先出(FIFO),如 offer(E e)(队尾入队)、poll()(队首出队);
- 双端操作:支持队首 / 队尾双向操作,如 addFirst(E e)(队首添加)、addLast(E e)(队尾添加)、getFirst()(获取队首)、getLast()(获取队尾);
- 栈行为:遵循后进先出(LIFO),可通过 push(E e)(等效于 addFirst,入栈)、pop()(等效于 removeFirst,出栈)实现栈功能。
- 对 LinkedList 的影响:由于 LinkedList 是双向链表,天然支持首尾节点的 O(1) 时间复杂度操作,因此它是 Deque 接口的最优实现之一。
Cloneable 与 Serializable 接口
- Cloneable:标记接口,表示类的实例可以通过 clone() 方法实现浅拷贝。
- Serializable:标记接口,表示类的实例可以进行序列化(将对象转化为字节流)和反序列化。
Iterable 接口
所有集合类的顶层接口之一,定义了迭代遍历的能力。实现 iterator() 方法,返回一个 Iterator 迭代器,支持对集合元素的遍历。
二、链表数据结构
在数据结构中,链表是用非连续的存储单元存储元素的线性表。
基本组成
- 节点(Node):链表的基本存储单元,通常包含两部分数据:


