📜  Java Deque接口(1)

📅  最后修改于: 2023-12-03 15:15:55.774000             🧑  作者: Mango

Java Deque接口

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类。