简介
在 Java 中,队列(Queue)是一个非常重要的集合类,它表示一个 先进先出(FIFO,First In First Out)的数据结构。这意味着队列中的元素是按顺序插入的,第一个插入的元素会是第一个被移除的元素。
1、Queue接口
Queue 是 Java 集合框架中的一个接口,定义了队列数据结构的基本操作。Queue 接口继承自 Collection 接口,提供了对队列的基本操作函数。
2、Queue接口常用方法
Queue 接口定义了用于队列操作的方法,其中最常见的操作包括:
插入:添加元素到队列。
删除:移除队列的元素。
查看:查看队列中的元素。
主要方法:
add(E e):将元素 e 插入队列。如果队列已满(对于有限队列),会抛出 IllegalStateException。
offer(E e):将元素 e 插入队列。如果队列已满,返回 false,而不是抛出异常。
remove():移除队列头部的元素。如果队列为空,抛出 NoSuchElementException。
poll():移除队列头部的元素。如果队列为空,返回 null。
element():获取队列头部的元素,但不移除它。如果队列为空,抛出 NoSuchElementException。
peek():获取队列头部的元素,但不移除它。如果队列为空,返回 null。
3、队列的常见实现类
——LinkedList:LinkedList 是 Queue 接口的一个常见实现类,提供了支持队列操作的功能。
——PriorityQueue:PriorityQueue 实现了 Queue 接口,但它是基于优先级堆实现的,因此它不是按插入顺序操作,而是按照元素的优先级(自然排序或自定义比较器排序)来排序元素。
——ArrayBlockingQueue、LinkedBlockingQueue:这两个类是 java.util.concurrent 包中的实现,用于处理多线程中的队列操作,支持线程安全的操作。
——Deque:双端队列接口,它是 Queue 接口的扩展,允许在队列的两端插入和删除元素。Deque 的常见实现有 ArrayDeque 和 LinkedList。
4、使用Queue的常见操作
import java.util.LinkedList;
import java.util.Queue;
public class QueueExample {
public static void main(String[] args) {
// 创建一个队列
Queue<String> queue = new LinkedList<>();
// 添加元素到队列
queue.add("Alice");
queue.add("Bob");
queue.add("Charlie");
// 查看队列头部元素
System.out.println("队列头部元素 (peek): " + queue.peek()); // Alice
// 移除队列头部元素
System.out.println("移除队列头部元素 (poll): " + queue.poll()); // Alice
// 查看队列头部元素
System.out.println("队列头部元素 (peek) after poll: " + queue.peek()); // Bob
// 打印队列的大小
System.out.println("队列大小: " + queue.size()); // 2
// 移除元素
while (!queue.isEmpty()) {
System.out.println("移除队列头部元素 (poll): " + queue.poll());
}
// 检查队列是否为空
System.out.println("队列是否为空: " + queue.isEmpty()); // true
}
}

3438

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



