温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java Queue队列怎么用

发布时间:2026-10-04 14:30:02 来源:亿速云 阅读:96 作者:小樊 栏目:编程语言

在 Java 中,Queue(队列) 是一种**先进先出(FIFO,First In First Out)**的数据结构。常用于任务调度、消息队列、BFS 等场景。

下面从 基本概念 → 常用实现类 → 常用方法 → 示例代码 → 使用注意 给你系统讲一下。


一、Queue 基本概念

Queue 是 Java 集合框架中的一个接口,位于:

java.util.Queue

它继承自 Collection。


二、常用实现类(重点)

1️⃣ LinkedList(最常用)

Queue<Integer> queue = new LinkedList<>();

2️⃣ ArrayDeque(效率高,推荐)

Queue<Integer> queue = new ArrayDeque<>();

3️⃣ PriorityQueue(优先队列,不是 FIFO)

Queue<Integer> queue = new PriorityQueue<>();

4️⃣ 阻塞队列(多线程)

BlockingQueue<Integer> queue = new LinkedBlockingQueue<>();

三、Queue 常用方法(重点)

操作 抛出异常 返回特殊值
入队 add(e) offer(e)
出队 remove() poll()
查看队首 element() peek()

✅ 推荐用 offer / poll / peek(更安全)


四、基础使用示例

1️⃣ 基本用法(LinkedList)

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

2️⃣ ArrayDeque(推荐)

Queue<Integer> queue = new ArrayDeque<>();
queue.offer(1);
queue.offer(2);
queue.poll();

3️⃣ PriorityQueue(按优先级出队)

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

⚠️ 不是先进先出!


五、Queue 遍历方式

方式一:poll(会清空队列)

while (!queue.isEmpty()) {
    queue.poll();
}

方式二:foreach(不删除)

for (String s : queue) {
    System.out.println(s);
}

六、常见使用场景

✅ 广度优先搜索(BFS)
✅ 任务队列
✅ 消息队列
✅ 缓冲队列


七、常见错误

❌ 用 Queue 直接 new Queue<>()(它是接口)
❌ 混淆 poll() 和 remove()
❌ 把 PriorityQueue 当普通队列用


八、简单总结

Queue:先进先出
实现:LinkedList / ArrayDeque
方法:offer / poll / peek
多线程:BlockingQueue

如果你愿意,我可以:

  • 给你讲 Deque(双端队列)
  • 写一个 BFS 队列示例
  • 对比 Queue vs Stack
  • 讲 阻塞队列在多线程中的用法

你想看哪一个?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手