一、队列的基本概念
队列是一种重要的线性数据结构,遵循先进先出(FIFO, First In First Out)原则。下面详细介绍Java中队列的实现和使用方法。
1. 队列的特性
-
先进先出:最先入队的元素最先出队
-
基本操作:
-
enqueue/offer:元素入队 -
dequeue/poll:元素出队 -
peek:查看队首元素但不移除
-
-
限制访问:只能访问队首和队尾元素
2. 常见应用场景
-
任务调度系统
-
消息队列
-
广度优先搜索(BFS)
-
打印机任务队列
-
线程池任务管理
二、Java中的Queue接口
Java集合框架提供了Queue接口及其多种实现:
import java.util.LinkedList;
import java.util.Queue;
public class Main {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
// 入队操作
queue.offer("A");
queue.offer("B");
queue.offer("C");
// 查看队首元素
System.out.println("队首元素: " + queue.peek()); // 输出A
// 出队操作
System.out.println("出队: " + queue.poll()); // 输出A
System.out.println("出队: " + queue.poll()); // 输出B
// 判断队列是否为空
System.out.println("队列是否为空: " + queue.isEmpty()); // 输出false
// 获取队列大小
System.out.println("队列大小: " + queue.size()); // 输出1
}
}
三、Queue的主要实现类
1. LinkedList
-
双向链表实现
-
可用作队列和双端队列(Deque)
-
允许null元素
Queue<Integer> queue = new LinkedList<>();
2. PriorityQueue
-
基于优先级堆的无界优先级队列
-
元素按自然顺序或Comparator排序
-
不允许null元素
// 自然顺序
Queue<Integer> pq = new PriorityQueue<>();
// 自定义顺序
Queue<Integer> pq = new PriorityQueue<>(Comparator.reverseOrder());
3. ArrayDeque
-
基于可调整大小的数组实现
-
比LinkedList更高效
-
不允许null元素
Queue<String> queue = new ArrayDeque<>();

被折叠的 条评论
为什么被折叠?



