原文: https://www.programiz.com/java-programming/queue

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

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


实现Queue的类

由于Queue是一个接口,我们无法提供它的直接实现。

为了使用Queue的功能,我们需要使用实现它的类:

Java `Queue`接口 - 图1


扩展Queue的接口

Queue接口还通过各种子接口扩展:

  • Deque
  • BlockingQueue
  • BlockingDeque

Java `Queue`接口 - 图2


队列数据结构的工作原理

在队列中,元素以先进先出的方式存储和访问。 即,从后面添加元素,从前面去除元素

Java `Queue`接口 - 图3


如何使用队列?

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

  1. // LinkedList implementation of Queue
  2. Queue<String> animal1 = new LinkedList<>();
  3. // Array implementation of Queue
  4. Queue<String> animal2 = new ArrayDeque<>();
  5. // Priority Queue implementation of Queue
  6. Queue<String> animal 3 = new PriorityQueue<>();

在这里,我们分别创建了LinkedListArrayDequePriorityQueue类的对象animal1animal2animal3。 这些对象可以使用Queue接口的功能。


Queue方法

Queue接口包含Collection接口的所有方法。 这是因为CollectionQueue的超级接口。

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

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

Queue接口的实现

1.LinkedList实现类

  1. import java.util.Queue;
  2. import java.util.LinkedList;
  3. class Main {
  4. public static void main(String[] args) {
  5. // Creating Queue using the LinkedList class
  6. Queue<Integer> numbers = new LinkedList<>();
  7. // offer elements to the Queue
  8. numbers.offer(1);
  9. numbers.offer(2);
  10. numbers.offer(3);
  11. System.out.println("Queue: " + numbers);
  12. // Access elements of the Queue
  13. int accessedNumber = numbers.peek();
  14. System.out.println("Accessed Element: " + accessedNumber);
  15. // Remove elements from the Queue
  16. int removedNumber = numbers.poll();
  17. System.out.println("Removed Element: " + removedNumber);
  18. System.out.println("Updated Queue: " + numbers);
  19. }
  20. }

输出

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

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

2.PriorityQueue实现类

  1. import java.util.Queue;
  2. import java.util.PriorityQueue;
  3. class Main {
  4. public static void main(String[] args) {
  5. // Creating Queue using the PriorityQueue class
  6. Queue<Integer> numbers = new PriorityQueue<>();
  7. // offer elements to the Queue
  8. numbers.offer(5);
  9. numbers.offer(1);
  10. numbers.offer(2);
  11. System.out.println("Queue: " + numbers);
  12. // Access elements of the Queue
  13. int accessedNumber = numbers.peek();
  14. System.out.println("Accessed Element: " + accessedNumber);
  15. // Remove elements from the Queue
  16. int removedNumber = numbers.poll();
  17. System.out.println("Removed Element: " + removedNumber);
  18. System.out.println("Updated Queue: " + numbers);
  19. }
  20. }

输出

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

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


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