Deque接口是位于java.util包 队列接口的一个子类型。Deque与双端队列有关,双端队列支持从数据结构的任意一端添加或删除元素。它既可以用作队列(先进先出/FIFO),也可以用作堆栈(后进先出/LIFO)。Deque是双端队列的缩写。
1.1 Deque 接口声明deque接口声明为:
public interface Dequeextends Queue
由于Deque是一个接口,所以不能以Deque类型创建对象。我们总是需要一个扩展这个列表的类来创建对象。而且,在Java 1.5中引入泛型之后,可以限制可以存储在Deque中的对象的类型。
实例:使用Deque的实现类LinkedList创建对象
Dequedeque = new LinkedList (); // 添加尾部元素 deque.add(" 1 (尾部)"); // 添加头部元素 deque.addFirst(" 2 (头部)"); // 添加在尾部元素 deque.addLast(" 3 (尾部)"); // 添加头部元素 deque.push(" 4 (头部)"); // 添加在尾部元素 deque.offer(" 5 (尾部)"); // 添加头部元素 deque.offerFirst(" 6 (头部)"); System.out.println(deque + "n"); // 删除头部元素,尾部元素 deque.removeFirst(); deque.removeLast(); System.out.println("Deque 删除后" + "头部和尾部" + deque);
输出
[ 6 (头部), 4 (头部), 2 (头部), 1 (尾部), 3 (尾部), 5 (尾部)] Deque 删除后头部和尾部[ 4 (头部), 2 (头部), 1 (尾部), 3 (尾部)]二、Deque 接口的API
| Method | Description |
|---|---|
| boolean add(object) | 它用于将指定的元素插入到deque容器中,成功时返回true。 |
| boolean offer(object) | 它用于在deque容器中插入指定的元素。 |
| Object remove() | 它用于检索和移除deque容器的头部。 |
| Object poll() | 它用于检索和移除该deque容器的头部,如果该deque容器为空,则返回null。 |
| Object element() | 它用于检索,但不移除该deque的头部。 |
| Object peek() | 它用于检索,但不删除该deque容器的头部,如果该deque容器为空,则返回null。 |
| Object peekFirst() | 该方法返回deque容器的头元素。该方法不会从deque容器中移除任何元素。当deque为空时,该方法返回Null。 |
| Object peekLast() | 该方法返回deque容器的最后一个元素。该方法不会从deque容器中移除任何元素。当deque为空时,该方法返回Null。 |
| Boolean offerFirst(e) | 将元素e插入到队列的前面。如果插入成功,返回true;否则,false |
| Object offerLast(e) | 将元素e插入到队列的尾部。如果插入成功,返回true;否则,false |



