校招破局:三无学生如何用课程作业与问题日志构建技术证据链
2026/10/1 9:06:42
Queue是 Java 集合框架(java.util包)中的一个接口,专门用于模拟 “先进先出(FIFO)” 的队列结构,就像日常生活中排队买票 —— 先到的人先买,后到的人排后面。
Collection接口,所以拥有 Collection 的通用方法(如size()、isEmpty())。Queue 定义了两组功能相似的方法(区别在于:操作失败时,一组抛异常,一组返回特殊值),新手优先记 “抛异常” 的核心方法即可:
| 操作类型 | 抛异常(推荐新手用) | 返回特殊值(无元素时返回 null/false) | 说明 |
|---|---|---|---|
| 入队(添加元素到队尾) | add(E e) | offer(E e) | 队列满时,add 抛IllegalStateException,offer 返回 false |
| 出队(移除队首元素) | remove() | poll() | 队列为空时,remove 抛NoSuchElementException,poll 返回 null |
| 查看队首元素(不移除) | element() | peek() | 队列为空时,element 抛NoSuchElementException,peek 返回 null |
Queue 是接口,不能直接实例化,实际开发中常用以下实现类:
ArrayBlockingQueue、LinkedBlockingQueue。java
运行
import java.util.LinkedList; import java.util.Queue; public class QueueDemo { public static void main(String[] args) { // 1. 创建Queue实例(用LinkedList实现) Queue<String> queue = new LinkedList<>(); // 2. 入队(添加元素) queue.add("用户1"); // 抛异常版 queue.offer("用户2"); // 返回值版 queue.offer("用户3"); System.out.println("初始队列:" + queue); // 输出:[用户1, 用户2, 用户3] // 3. 查看队首元素(不移除) String head = queue.element(); System.out.println("队首元素:" + head); // 输出:用户1 // 4. 出队(移除队首元素) String removeUser = queue.remove(); System.out.println("出队元素:" + removeUser); // 输出:用户1 System.out.println("出队后队列:" + queue); // 输出:[用户2, 用户3] // 5. 判空+遍历 while (!queue.isEmpty()) { System.out.println("遍历出队:" + queue.poll()); } // 最终输出:遍历出队:用户2 遍历出队:用户3 } }java
运行
import java.util.PriorityQueue; import java.util.Queue; public class PriorityQueueDemo { public static void main(String[] args) { // 优先级队列(默认整数升序) Queue<Integer> priorityQueue = new PriorityQueue<>(); priorityQueue.offer(5); priorityQueue.offer(1); priorityQueue.offer(3); // 出队顺序:1 → 3 → 5(按优先级,而非添加顺序) while (!priorityQueue.isEmpty()) { System.out.println(priorityQueue.poll()); } } }LinkedList,高性能场景用ArrayDeque,优先级场景用PriorityQueue,多线程场景用BlockingQueue子类。remove()/element()操作空队列会抛异常,poll()/peek()返回 null,实际开发中根据是否需要捕获异常选择。