📅  最后修改于: 2023-12-03 15:15:55.774000             🧑  作者: Mango
Java Deque接口是Java集合框架中的一种双端队列数据结构。它支持在队列的两端插入和删除元素,并可以在队列的两端检索元素。Deque是“Double Ended Queue”的简称。
Deque接口位于java.util包中,它是Queue接口的子接口。Deque接口定义了一组与双端队列操作相关的方法,包括添加、删除和检索元素的方法,例如addFirst()/addLast()、removeFirst()/removeLast()、getFirst()/getLast()等。
下面是Deque接口的定义:
public interface Deque<E> extends Queue<E> {
void addFirst(E e);
void addLast(E e);
boolean offerFirst(E e);
boolean offerLast(E e);
E removeFirst();
E removeLast();
E pollFirst();
E pollLast();
E getFirst();
E getLast();
E peekFirst();
E peekLast();
boolean removeFirstOccurrence(Object o);
boolean removeLastOccurrence(Object o);
boolean add(E e);
boolean offer(E e);
E remove();
E poll();
E element();
E peek();
void push(E e);
E pop();
boolean contains(Object o);
int size();
Iterator<E> iterator();
Iterator<E> descendingIterator();
}
从定义可以看出,Deque接口继承了Queue接口,因此Deque也是一种队列数据结构,支持先进先出(FIFO)的元素访问方式。
除此以外,Deque还支持在队列两端插入和删除元素,以及在队列两端检索元素。
下面是使用Deque接口的示例程序:
import java.util.Deque;
import java.util.LinkedList;
public class DequeExample {
public static void main(String[] args) {
Deque<Integer> deque = new LinkedList<Integer>();
deque.addFirst(1);
deque.addLast(2);
deque.offerFirst(0);
deque.offerLast(3);
System.out.println("Deque: " + deque);
int first = deque.removeFirst();
int last = deque.removeLast();
System.out.println("First element removed: " + first);
System.out.println("Last element removed: " + last);
int peekFirst = deque.peekFirst();
int peekLast = deque.peekLast();
System.out.println("First element: " + peekFirst);
System.out.println("Last element: " + peekLast);
}
}
输出结果如下:
Deque: [0, 1, 2, 3]
First element removed: 0
Last element removed: 3
First element: 1
Last element: 2
在上面的示例程序中,我们使用了LinkedList类来创建一个Deque对象,然后通过调用Deque接口中的方法来操作这个队列。
具体来说,我们先通过addFirst()和addLast()方法插入了两个元素1和2,然后通过offerFirst()和offerLast()方法插入了两个元素0和3,形成了双端队列。
接着,我们调用了removeFirst()和removeLast()方法,分别从队列的两端移除了元素0和3,然后使用了peekFirst()和peekLast()方法,获取队列的第一个元素1和最后一个元素2的值。
Java Deque接口是一种双端队列数据结构,支持在队列的两端插入和删除元素,并可以在队列的两端检索元素。Deque继承了Queue接口,因此Deque也支持先进先出(FIFO)的元素访问方式。Deque接口定义了一组与双端队列操作相关的方法,包括添加、删除和检索元素的方法。在使用Deque接口时,我们可以选择使用Java集合框架中提供的实现类,例如LinkedList类。