Java 深入解析 LinkedList:链表、栈、队列全搞懂
·
在 Java 集合框架中,ArrayList 很常用,但我发现很多初学者对 LinkedList 的理解总停留在“它是个列表”的层面。实际上,LinkedList 不仅仅是列表,它底层是 双向链表,还能轻松实现 栈(LIFO)和 队列(FIFO)操作

LinkedList 基础概念
LinkedList 是 Java 集合框架中的 链表实现类,实现了:
List 接口 → 可以像 ArrayList 一样存储对象,按顺序访问,Deque 接口 → 可以当 栈 或 队列 用
底层结构:
-
双向链表:每个节点存储,数据,前驱节点引用,后继节点引用
特点总结:
| 特性 | ArrayList | LinkedList |
|---|---|---|
| 随机访问 | 快 O(1) | 慢 O(n) |
| 插入/删除 | 慢 O(n) | 快 O(1)(首尾或迭代器定位) |
| 内存占用 | 少 | 较大,每个节点存前驱/后继引用 |
| 适用场景 | 随机访问多 | 插入/删除多、队列/栈操作 |
LinkedList 基本操作
1. 创建 LinkedList
LinkedList<String> articles = new LinkedList<>();
-
创建一个空链表,可以存任意对象类型,推荐使用泛型
<T>保证类型安全
2. 添加元素
articles.add("Java入门");
articles.add("ArrayList实战");
articles.add("LinkedList解析");
-
add()→ 默认在链表末尾添加,addFirst()→ 在链表头添加,addLast()→ 在链表尾添加(同 add())
3. 遍历元素
for(String a : articles){
System.out.println(a);
}
效果:
Java入门
ArrayList实战
LinkedList解析
也可以用普通 for 循环或迭代器遍历
4. 删除元素
articles.removeFirst(); // 删除首元素
articles.removeLast(); // 删除尾元素
articles.remove("ArrayList实战"); // 删除指定元素
LinkedList 当栈使用(LIFO)
LinkedList<String> stack = new LinkedList<>();
stack.push("任务A");
stack.push("任务B");
stack.push("任务C");
System.out.println(stack.pop()); // 任务C
System.out.println(stack.pop()); // 任务B
-
push()→ 压栈,pop()→ 弹栈,栈是 后进先出(LIFO)
栈操作在链表头进行,效率高
LinkedList 当队列使用(FIFO)
LinkedList<String> queue = new LinkedList<>();
queue.addLast("任务1");
queue.addLast("任务2");
queue.addLast("任务3");
System.out.println(queue.removeFirst()); // 任务1
System.out.println(queue.removeFirst()); // 任务2
-
队列是 先进先出(FIFO),
addLast()→ 入队,removeFirst()→ 出队
适合消息队列、任务列表等场景
总结:
import java.util.LinkedList;
public class LinkedListDemo {
public static void main(String[] args) {
LinkedList<String> articles = new LinkedList<>();
// 添加元素
articles.add("Java入门");
articles.add("ArrayList实战");
articles.add("LinkedList深入解析");
// 遍历
for(String a : articles){
System.out.println(a);
}
// 在开头/结尾添加
articles.addFirst("面向对象基础");
articles.addLast("集合实战");
System.out.println("添加首尾元素后:" + articles);
// 删除首尾元素
articles.removeFirst();
articles.removeLast();
System.out.println("删除首尾元素后:" + articles);
// 访问元素
System.out.println("第二篇文章:" + articles.get(1));
}
}
效果:
Java入门
ArrayList实战
LinkedList深入解析
添加首尾元素后:[面向对象基础, Java入门, ArrayList实战, LinkedList深入解析, 集合实战]
删除首尾元素后:[Java入门, ArrayList实战, LinkedList深入解析]
第二篇文章:ArrayList实战
更多推荐




所有评论(0)