β

[集合框架] Deque 接口

Aptusource.orgAptusource.org 150 阅读

这个单词通常发音为 deck,deque 是一个双端队列。双端队列是一个线性的元素集合,但是支持在两端新增和移除元素。Deque 比 Stack 和 Queue 提供了更为丰富的数据类型,因为它同时实现了栈和队列的特性。Deque 接口定义了方法在 Deque 实例的两端访问元素,这些方法包括插入,删除和查看元素。像 ArrayDeque 和 LinkedList 都是预定义的 Deque 实现。

注意,Deque 满足后进先出的栈的特性,也满足先进先出的队列的特性。Deque 接口中的方法我们分为三部分来介绍:

新增

addfirst 和 offerFirst 方法会在 Deque 实例的最开始插入元素。addLast 和 offerLast 方法会在 Deque 实例的最后插入元素。当 Deque 的容量受到限制时,首选的方法是 offerFirst 和 offerLast,因为 addFirst 在 Deque 满的情况下调用会抛出异常。

删除

removeFirst 和 pollFirst 方法将会删除 Deque 最开始的元素。removeLast 和 pollLast 方法将会删除 Deque 最后的元素。如果 Deque 为空,pollFirst 和 pollLast 方法将会返回 null,而 removeFirst 和 removeLast 将会抛出异常。

获取

getFirst 和 peekFirst 都是获取 Deque 实例的第一个元素。它们并不会删除 Deque 中的元素。同样 getLast 和 peekLast 用于获取 Deque 实例的最后一个元素。如果 Deque 为空 getFirst 和 getLast 方法将会抛出异常,而 peekFirst 和 peekLast 方法将会返回 null。

Deque 的这 12 个方法在下表中做个总结:

操作类型 第一个元素 最后一个元素
新增 addFirst(e)
offerFirst(e)
addLast(e)
offerLast(e)
删除 removeFirst()
pollFirst()
removeLast()
pollLast()
获取 getFirst()
peekFirst()
getLast()
peekLast()

除了这些 Deque 的基本操作外,Deque 还提供了一些其它的预定义方法。例如,removeFirstOccurence 方法,这个方法将会删除第一个指定元素。如果元素不存在,那么 Deque 将保持不变。还有一个类似的方法是 removeLastOccurence,它将删除最后一个指定元素。这两个方法的返回值都是 boolean 类型,返回 true 表示在 Deque 中找到了指定元素。

作者:Aptusource.orgAptusource.org
最好的 Java 技术博客
原文地址:[集合框架] Deque 接口, 感谢原作者分享。

发表评论