在 Java 中,Queue(队列) 是一种**先进先出(FIFO,First In First Out)**的数据结构。常用于任务调度、消息队列、BFS 等场景。
下面从 基本概念 → 常用实现类 → 常用方法 → 示例代码 → 使用注意 给你系统讲一下。
Queue 是 Java 集合框架中的一个接口,位于:
java.util.Queue
它继承自 Collection。
Queue<Integer> queue = new LinkedList<>();
Queue<Integer> queue = new ArrayDeque<>();
Queue<Integer> queue = new PriorityQueue<>();
BlockingQueue<Integer> queue = new LinkedBlockingQueue<>();
| 操作 | 抛出异常 | 返回特殊值 |
|---|---|---|
| 入队 | add(e) |
offer(e) |
| 出队 | remove() |
poll() |
| 查看队首 | element() |
peek() |
✅ 推荐用 offer / poll / peek(更安全)
import java.util.*;
public class QueueDemo {
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
// 出队
while (!queue.isEmpty()) {
System.out.println(queue.poll());
}
}
}
输出:
A
B
C
Queue<Integer> queue = new ArrayDeque<>();
queue.offer(1);
queue.offer(2);
queue.poll();
Queue<Integer> pq = new PriorityQueue<>();
pq.offer(3);
pq.offer(1);
pq.offer(2);
while (!pq.isEmpty()) {
System.out.println(pq.poll());
}
输出:
1
2
3
⚠️ 不是先进先出!
while (!queue.isEmpty()) {
queue.poll();
}
for (String s : queue) {
System.out.println(s);
}
✅ 广度优先搜索(BFS)
✅ 任务队列
✅ 消息队列
✅ 缓冲队列
❌ 用 Queue 直接 new Queue<>()(它是接口)
❌ 混淆 poll() 和 remove()
❌ 把 PriorityQueue 当普通队列用
Queue:先进先出
实现:LinkedList / ArrayDeque
方法:offer / poll / peek
多线程:BlockingQueue
如果你愿意,我可以:
你想看哪一个?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。