在本教程中,我们将学习Deque接口,如何使用它及其方法。
Java 集合框架的Deque接口提供双端队列的功能。 它扩展了Queue接口。
双端队列的工作原理
在常规队列中,元素是从后面添加的,而从前面删除的。 但是,在双端队列中,我们可以从前面和后面插入和删除元素。

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

如何使用Deque?
在 Java 中,我们必须导入java.util.Deque包才能使用Deque。
// Array implementation of DequeDeque<String> animal1 = new ArrayDeque<>();// LinkedList implementation of DequeDeque<String> animal2 = new LinkedList<>();
在这里,我们分别创建了ArrayDeque和LinkedList类的对象animal1和animal2。 这些对象可以使用Deque接口的功能。
Deque方法
由于Deque扩展了Queue接口,因此它继承了Queue接口的所有方法。
除了Queue接口中可用的方法外,Deque接口还包括以下方法:
addFirst()- 在双端队列的开头添加指定的元素。 如果双端队列已满,则引发异常。addLast()- 在双端队列的末尾添加指定的元素。 如果双端队列已满,则引发异常。offerFirst()- 在双端队列的开头添加指定的元素。 如果双端队列已满,则返回false。offerLast()- 在双端队列的末尾添加指定的元素。 如果双端队列已满,则返回false。getFirst()- 返回双端队列的第一个元素。 如果双端队列为空,则引发异常。getLast()- 返回双端队列的最后一个元素。 如果双端队列为空,则引发异常。peekFirst()- 返回双端队列的第一个元素。 如果双端队列为空,则返回null。peekLast()- 返回双端队列的最后一个元素。 如果双端队列为空,则返回null。removeFirst()- 返回并删除双端队列的第一个元素。 如果双端队列为空,则引发异常。removeLast()- 返回并删除双端队列的最后一个元素。 如果双端队列为空,则引发异常。pollFirst()- 返回并删除双端队列的第一个元素。 如果双端队列为空,则返回null。pollLast()- 返回并删除双端队列的最后一个元素。 如果双端队列为空,则返回null。
双端队列作为栈数据结构
Java Collections框架的Stack类提供了栈的实现。
但是,建议使用Deque作为栈,而不是栈类。 这是因为Stack的方法是同步的。
以下是Deque接口提供的实现栈的方法:
push()- 在双端队列的开头添加一个元素pop()- 从双端队列的开头删除元素peek()- 从双端队列的开头返回一个元素
ArrayDeque类中Deque的实现
import java.util.Deque;import java.util.ArrayDeque;class Main {public static void main(String[] args) {// Creating Deque using the ArrayDeque classDeque<Integer> numbers = new ArrayDeque<>();// add elements to the Dequenumbers.offer(1);numbers.offerLast(2);numbers.offerFirst(3);System.out.println("Deque: " + numbers);// Access elements of the Dequeint firstElement = numbers.peekFirst();System.out.println("First Element: " + firstElement);int lastElement = numbers.peekLast();System.out.println("Last Element: " + lastElement);// Remove elements from the Dequeint removedNumber1 = numbers.pollFirst();System.out.println("Removed First Element: " + removedNumber1);int removedNumber2 = numbers.pollLast();System.out.println("Removed Last Element: " + removedNumber2);System.out.println("Updated Deque: " + numbers);}}
输出
Deque: [3, 1, 2]First Element: 3Last Element: 2Removed First Element: 3Removed Last Element: 2Updated Deque: [1]
要了解更多信息,请访问 Java ArrayDeque 。
