Java 双端队列接口
Java 双端队列接口
在本教程中,我们将了解 Deque 接口、如何使用它以及它的方法。
Deque
Java 集合框架的接口提供了双端队列的功能。它扩展了 Queue
界面。
双端队列的工作
在常规队列中,元素从后面添加并从前面移除。但是,在双端队列中,我们可以前后插入和删除元素 .
实现双端队列的类
为了使用 Deque
的功能 接口,我们需要使用实现它的类:
- ArrayDeque
- 链表
如何使用双端队列?
在 Java 中,我们必须导入 java.util.Deque
使用 Deque
的包 .
// Array implementation of Deque
Deque<String> animal1 = new ArrayDeque<>();
// LinkedList implementation of Deque
Deque<String> animal2 = new LinkedList<>();
在这里,我们创建了对象 animal1 和 animal2 类 ArrayDeque 和 LinkedList , 分别。这些对象可以使用 Deque
的功能 界面。
双端队列方法
自 Deque
扩展了 Queue
接口,它继承了Queue接口的所有方法。
除了 Queue
中可用的方法 接口,Deque
接口还包括以下方法:
- addFirst() - 在双端队列的开头添加指定的元素。如果双端队列已满,则引发异常。
- addLast() - 在双端队列末尾添加指定元素。如果双端队列已满,则引发异常。
- offerFirst() - 在双端队列的开头添加指定的元素。返回
false
如果双端队列已满。 - offerLast() - 在双端队列末尾添加指定元素。返回
false
如果双端队列已满。 - getFirst() - 返回双端队列的第一个元素。如果双端队列为空,则引发异常。
- getLast() - 返回双端队列的最后一个元素。如果双端队列为空,则引发异常。
- peekFirst() - 返回双端队列的第一个元素。返回
null
如果双端队列为空。 - peekLast() - 返回双端队列的最后一个元素。返回
null
如果双端队列为空。 - removeFirst() - 返回并删除双端队列的第一个元素。如果双端队列为空,则引发异常。
- removeLast() - 返回并删除双端队列的最后一个元素。如果双端队列为空,则引发异常。
- pollFirst() - 返回并删除双端队列的第一个元素。返回
null
如果双端队列为空。 - pollLast() - 返回并删除双端队列的最后一个元素。返回
null
如果双端队列为空。
作为堆栈数据结构的双端队列
Stack
Java Collections
的类 框架提供了栈的实现。
不过建议使用Deque
作为堆栈而不是 Stack 类。这是因为 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 class
Deque<Integer> numbers = new ArrayDeque<>();
// add elements to the Deque
numbers.offer(1);
numbers.offerLast(2);
numbers.offerFirst(3);
System.out.println("Deque: " + numbers);
// Access elements of the Deque
int firstElement = numbers.peekFirst();
System.out.println("First Element: " + firstElement);
int lastElement = numbers.peekLast();
System.out.println("Last Element: " + lastElement);
// Remove elements from the Deque
int 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: 3 Last Element: 2 Removed First Element: 3 Removed Last Element: 2 Updated Deque: [1]
要了解更多信息,请访问 Java ArrayDeque。
java