更多 Java 集合类方面的文章,请参见文集《Java 集合类》
Deque
接口是 double ended queue 的缩写,即双端队列,支持在队列的两端插入和删除元素,继承 Queue
接口。
public interface Deque extends Queue
Deque
的 12 种方法总结如下:
- 插入:
- 如果操作失败则抛出异常
void addFirst(Object e)
void addLast(Object e)
- 如果操作失败则返回一个特殊值(
null
或false
)boolean offerFirst(Object e)
boolean offerLast(Object e);
- 如果操作失败则抛出异常
- 删除:
- 如果操作失败则抛出异常
Object removeFirst()
Object removeLast()
- 如果操作失败则返回一个特殊值(
null
或false
)Object pollFirst()
Object pollLast()
- 如果操作失败则抛出异常
- 获取:
- 如果操作失败则抛出异常
Object getFirst()
Object getLast()
- 如果操作失败则返回一个特殊值(
null
或false
)Object peekFirst()
Object peekLast()
- 如果操作失败则抛出异常
Deque
与 List
不同,该接口不支持下标访问元素。Deque
的实现并不严格要求禁止插入元素 null
,但强烈鼓励不插入 null
。任何 Deque
的实现都强烈鼓励不要插入 null
,因为 null
是多种方法作为一种特殊返回值来表示 Deque
为空。
ArrayDeque
和 LinkedList
类是 Deque
接口的两个实现类:
-
ArrayDeque
类由数组支持。适合当作堆栈使用。 -
LinkedList
类由链表支持。适合当作FIFO队列使用。
示例
public static void main(String[] args) {
Deque<Integer> deque = new LinkedList<>();
deque.addLast(1);
deque.offerLast(2);
deque.offerLast(3);
deque.offerLast(4);
System.out.println(deque); // [1, 2, 3, 4]
while (deque.peekFirst() != null) {
System.out.println(deque.peekFirst());
deque.removeFirst();
}
}
引用:
Java 双端队列