Java中的LinkedList是基于双向链表实现的集合类,它不仅实现了List接口,还实现了Deque接口,因此天然支持队列和栈的相关操作,不需要额外引入其他类就可以实现这两种数据结构的功能。

LinkedList实现队列
队列是一种先进先出的数据结构,核心操作是入队和出队。LinkedList的Deque接口提供了对应的方法,实现队列主要有以下两种操作方式:
常用队列操作方法
- 入队:使用
addLast(E e)或者offer(E e)方法,将元素添加到队列尾部 - 出队:使用
poll()方法,取出并移除队列头部的元素,队列为空时返回null;也可以使用removeFirst()方法,队列为空时会抛出异常 - 查看队头元素:使用
peek()方法,获取队头元素但不移除,队列为空时返回null
队列实现代码示例
import java.util.LinkedList;
import java.util.Queue;
public class LinkedListQueueDemo {
public static void main(String[] args) {
// 创建队列,用Queue接口接收LinkedList实例
Queue<String> queue = new LinkedList<>();
// 入队操作
queue.offer("第一个元素");
queue.offer("第二个元素");
queue.offer("第三个元素");
System.out.println("当前队列:" + queue);
// 查看队头元素
String peekElement = queue.peek();
System.out.println("队头元素:" + peekElement);
// 出队操作
String pollElement = queue.poll();
System.out.println("出队元素:" + pollElement);
System.out.println("出队后队列:" + queue);
}
}
LinkedList实现栈
栈是一种后进先出的数据结构,核心操作是入栈和出栈。同样基于LinkedList的Deque接口方法,可以轻松实现栈的功能。
常用栈操作方法
- 入栈:使用
push(E e)方法,将元素添加到栈顶 - 出栈:使用
pop()方法,取出并移除栈顶元素,栈为空时会抛出异常;也可以使用pollLast()方法,栈为空时返回null - 查看栈顶元素:使用
peek()方法,获取栈顶元素但不移除,栈为空时返回null
栈实现代码示例
import java.util.Deque;
import java.util.LinkedList;
public class LinkedListStackDemo {
public static void main(String[] args) {
// 创建栈,用Deque接口接收LinkedList实例
Deque<String> stack = new LinkedList<>();
// 入栈操作
stack.push("第一个元素");
stack.push("第二个元素");
stack.push("第三个元素");
System.out.println("当前栈:" + stack);
// 查看栈顶元素
String peekElement = stack.peek();
System.out.println("栈顶元素:" + peekElement);
// 出栈操作
String popElement = stack.pop();
System.out.println("出栈元素:" + popElement);
System.out.println("出栈后栈:" + stack);
}
}
队列和栈操作对比
虽然都是基于LinkedList实现,但队列和栈的操作逻辑有明显差异,具体对比如下:
| 操作类型 | 队列方法 | 栈方法 | 操作说明 |
|---|---|---|---|
| 添加元素 | addLast/offer | push | 队列加在尾部,栈加在头部 |
| 移除元素 | poll/removeFirst | pop/pollLast | 队列移除头部,栈移除头部 |
| 查看元素 | peek | peek | 两者都是查看头部元素 |
使用注意事项
LinkedList实现队列和栈时,不建议用List接口接收实例,否则无法直接使用Deque特有的push、pop等方法,需要手动调用对应方法。
另外,多线程环境下LinkedList不是线程安全的,如果需要在线程安全的场景中使用队列或栈,需要额外做同步处理,或者选择ConcurrentLinkedQueue、ArrayBlockingQueue等线程安全的集合类。
JavaLinkedList队列栈集合操作修改时间:2026-06-27 12:57:24