Java Queue 接口

Queue 接口定义了队列数据结构。在本教程中,我们将了解 Java Queue 接口及其方法。

在本教程中,我们将了解 Java Queue 接口及其方法。

Java 集合框架的 Queue 接口定义了队列数据结构的功能。 Queue 接口扩展了 Collection 接口。

在队列中,元素以先进先出的方式存储和访问。就像排队买票一样,先来排队的人,最先买到票,最先离开队伍。

队列数据结构的工作原理:先进先出

Queue 接口的字接口

以下几个接口扩展了 Queue 接口:

  • Deque: 双向队列
  • BlockingQueue: 阻塞队列
  • BlockingDeque: 双向阻塞队列

Deque、BlockingQueue 和 BlockingDeque 扩展了 Queue 接口

实现队列的类

Queue 是一个接口,有几个类直接或间接的实现了 Queue 接口:

ArrayDeque、LinkedList 和 PriorityQueue 在 Java 中实现了 Queue 接口。

如何使用队列?

在 Java 中,我们必须导入 java.util.Queue 包才能使用 Queue .

// LinkedList implementation of Queue
Queue<String> animal1 = new LinkedList<>();

// Array implementation of Queue
Queue<String> animal2 = new ArrayDeque<>();

// Priority Queue implementation of Queue
Queue<String> animal 3 = new PriorityQueue<>();

在这里,我们已经分别使用 LinkedListArrayDequePriorityQueue 类创建了不同的队列实例。

队列方法

Queue 接口包含 Collection 接口的所有方法,这是因为 Queue 接口扩展了 Collection 接口。

Queue 接口的一些常用方法是:

  • add() - 将指定的元素插入队列。如果插入成功,则返回 true ,否则抛出异常。
  • offer() - 将指定的元素插入队列。如果插入成功,则返回 true ,否则返回 false
  • element() - 返回队列的头部元素。如果队列为空,则抛出异常。
  • peek() - 返回队列的头部。如果队列为空则返回 null
  • remove() - 移除并返回队列的头部元素。如果队列为空,则抛出异常。
  • poll() - 移除并返回队列的头部。如果队列为空则返回 null

队列接口的实现

  • LinkedList
import java.util.Queue;
import java.util.LinkedList;

public class Main {
  public static void main(String[] args) {
    // 使用 LinkedList 创建队列
    Queue<Integer> numbers = new LinkedList<>();

    // 插入元素
    numbers.offer(1);
    numbers.offer(2);
    numbers.offer(3);
    System.out.println("Queue: " + numbers);

    // 访问队列的元素
    int accessedNumber = numbers.peek();
    System.out.println("Accessed Element: " + accessedNumber);

    // 从队列中删除元素
    int removedNumber = numbers.poll();
    System.out.println("Removed Element: " + removedNumber);

    System.out.println("Updated Queue: " + numbers);
  }
}

输出

Queue: [1, 2, 3]
Accessed Element: 1
Removed Element: 1
Updated Queue: [2, 3]

要了解更多信息,请访问 Java LinkedList

  • PriorityQueue
import java.util.Queue;
import java.util.PriorityQueue;

public class Main {

  public static void main(String[] args) {
    // 使用 PriorityQueue 创建队列
    Queue<Integer> numbers = new PriorityQueue<>();

    // 插入元素
    numbers.offer(5);
    numbers.offer(1);
    numbers.offer(2);
    System.out.println("Queue: " + numbers);

    // 访问队列元素
    int accessedNumber = numbers.peek();
    System.out.println("Accessed Element: " + accessedNumber);

    // 从队列中删除元素
    int removedNumber = numbers.poll();
    System.out.println("Removed Element: " + removedNumber);

    System.out.println("Updated Queue: " + numbers);
  }
}

输出

Queue: [1, 5, 2]
Accessed Element: 1
Removed Element: 1
Updated Queue: [2, 5]

要了解更多信息,请访问 Java PriorityQueue

在接下来的教程中,我们将详细了解 Queue 接口的不同子接口及其实现类。