📜  Java队列接口

📅  最后修改于: 2020-09-26 15:21:46             🧑  作者: Mango

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

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


实现队列的类

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

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

  • ArrayDeque
  • 链表
  • PriorityQueue

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


扩展Queue的接口

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

  • Deque
  • BlockingQueue
  • BlockingDeque

Deque,BlockingQueue和BlockingDeque扩展了Queue接口。


队列数据结构的工作

在队列中, 以先进先出的方式存储和访问元素。也就是说,元素从后面添加, 从前面删除

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


如何使用队列?

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

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

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

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

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


排队方法

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

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) {
        // Creating Queue using the LinkedList class
        Queue numbers = new LinkedList<>();

        // offer elements to the Queue
        numbers.offer(1);
        numbers.offer(2);
        numbers.offer(3);
        System.out.println("Queue: " + numbers);

        // Access elements of the Queue
        int accessedNumber = numbers.peek();
        System.out.println("Accessed Element: " + accessedNumber);

        // Remove elements from the Queue
        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。

2.实现PriorityQueue类

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

class Main {

    public static void main(String[] args) {
        // Creating Queue using the PriorityQueue class
        Queue numbers = new PriorityQueue<>();

        // offer elements to the Queue
        numbers.offer(5);
        numbers.offer(1);
        numbers.offer(2);
        System.out.println("Queue: " + numbers);

        // Access elements of the Queue
        int accessedNumber = numbers.peek();
        System.out.println("Accessed Element: " + accessedNumber);

        // Remove elements from the Queue
        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接口的不同子接口及其实现。