Java Queue 接口
在本教程中,我们将学习Java Queue接口及其方法。
Java集合框架的Queue接口提供了队列数据结构的功能。它继承了Collection接口。
实现队列的类
由于Queue是一个接口,因此我们无法提供它的直接实现。
为了使用Queue的功能,我们需要使用实现它的类:
继承Queue的接口
Queue接口还可以被各种子接口继承:Deque
BlockingQueue
BlockingDeque
队列数据结构的工作流程
在队列中,以先进先出的方式存储和访问元素。也就是说,从后面添加元素,从前面删除元素。
如何使用队列(Queue)?
在Java中,必须导入java.util.Queue包才能使用Queue。
// 使用 LinkedList 创建
Queue animal1 = new LinkedList<>();
// 使用 ArrayDeque 创建
Queue animal2 = new ArrayDeque<>();
// 使用 PriorityQueue创建
Queue animal 3 = new PriorityQueue<>();
在这里,我们分别创建了类LinkedList,ArrayDeque和PriorityQueue的对象Animal1,Animal2和Animal3。 这些对象可以使用Queue接口的功能。
Queue的方法
Queue接口包括Collection接口的所有方法。 这是因为Collection是Queue的超级接口。
Queue接口的一些常用方法是:add() - 将指定的元素插入队列。如果任务成功,则add()返回true,否则将引发异常。
offer() - 将指定的元素插入队列。如果任务成功,则offer()返回true,否则返回false。
element() - 返回队列的开头。如果队列为空,则引发异常。
peek() - 返回队列的开头。 如果队列为空,则返回null。
remove() - 返回并删除队列的头部。如果队列为空,则引发异常。
poll() - 返回并删除队列的开头。 如果队列为空,则返回null。
队列接口的实现
1.实现LinkedList类
示例
import java.util.Queue;
import java.util.LinkedList;
class Main {
public static void main(String[] args) {
// 创建 Queue 使用LinkedList 类
Queue numbers = new LinkedList<>();
//添加元素到 Queue
numbers.offer(1);
numbers.offer(2);
numbers.offer(3);
System.out.println("Queue: " + numbers);
// 访问Queue的元素
int accessedNumber = numbers.peek();
System.out.println("访问元素: " + accessedNumber);
//从队列中Queue元素
int removedNumber = numbers.poll();
System.out.println("删除元素: " + removedNumber);
System.out.println("更新后的 Queue: " + numbers);
}
}
输出结果Queue: [1, 2, 3]
访问元素: 1
删除元素: 1
更新后的 Queue: [2, 3]
2.实现PriorityQueue类
示例
import java.util.Queue;
import java.util.PriorityQueue;
class Main {
public static void main(String[] args) {
// 使用PriorityQueue类创建队列
Queue numbers = new PriorityQueue<>();
//添加元素到 Queue
numbers.offer(5);
numbers.offer(1);
numbers.offer(2);
System.out.println("Queue: " + numbers);
//访问 Queue 的元素
int accessedNumber = numbers.peek();
System.out.println("访问元素: " + accessedNumber);
//从 Queue 删除元素
int removedNumber = numbers.poll();
System.out.println("删除元素: " + removedNumber);
System.out.println("更新后的 Queue: " + numbers);
}
}
输出结果Queue: [1, 5, 2]
访问元素: 1
删除元素: 1
更新后的 Queue: [2, 5]
在接下来的教程中,我们将详细了解该Queue接口的不同子接口及其实现。