双端队列,支持在两端插入和删除元素的线性集合,因为它同时实现了堆栈和队列(Stack and Queue ),是比堆栈和队列更丰富的抽象数据类型。
预定义类,如ArrayDeque和LinkedList实现了Deque接口。
请注意,Deque接口既可以用作后进先出堆栈,也可以用作先入先出队列。
在Deque接口中给出的方法分为三部分:
Insert
addfirst 和 offerFirst,从Deque 实例开头添加。
addLast 和 offerLast,从Deque 实例结尾添加。
当Deque实例的容量受限时,首选offerFirst和offerLast,因为如果它容量满了时,addFirst可能不会抛出异常。
Remove
removeFirst 和 pollFirst ,从Deque 实例开头删除。
removeLast 和pollLast,从Deque 实例结尾删除。
如果Deque实例为空,pollFirst和pollLast返回null,而如果Deque实例为空,removeFirst和removeLast抛出异常。
Retrieve
getFirst和peekFirst方法检索Deque实例的第一个元素。
getLast和peekLast方法检索最后一个元素。
如果deque实例为空,则getFirst和getLast方法抛出异常,而peekFirst和peekLast方法返回NULL
操作类型 | 首元素 | 尾元素 |
---|---|---|
Insert | addFirst(e) ,offerFirst(e) | addLast(e),offerLast(e) |
Remove | removeFirst(),pollFirst() | removeLast(),pollLast() |
Examine | getFirst(),peekFirst() | getLast(),peekLast() |
Deque接口还有其他的预定义方法。其中一个是removefirstoccuence,如果指定的元素在Deque实例中存在,该方法将删除它的第一次出现,如果元素不存在,则Deque实例保持不变。另一个类似的方法是removelastoccurrence;它删除Deque实例中最后一次出现的指定元素。这些方法的返回类型为布尔型,如果元素存在于Deque实例中,则返回true。
网友评论