E
-元素举行此集合中的类型
public interface Deque<E> extends Queue<E>
Deque
实现地方没有固定的限制对他们可能包含的元素的数目,但此接口支持容量受限的双端队列以及那些没有固定大小的限制。
该接口定义了在deque两端访问元素的方法。提供了插入、删除和检查元素的方法。这些方法都存在两种形式:一个抛出一个异常,如果操作失败,其他返回一个特殊的价值(无论是null
或false
,根据操作)。插入操作的后一种形式是专为使用有容量限制Deque
实现;在大多数实现中,插入操作不会失败。
上述十二种方法在下表中总结:
First Element (Head) | Last Element (Tail) | |||
Throws exception | Special value | Throws exception | Special value | |
Insert | addFirst(e) |
offerFirst(e) |
addLast(e) |
offerLast(e) |
Remove | removeFirst() |
pollFirst() |
removeLast() |
pollLast() |
Examine | getFirst() |
peekFirst() |
getLast() |
peekLast() |
这Queue
接口扩展接口。当一个deque容器作为一个队列,FIFO(先进先出)的行为的结果。元素添加在deque的结束和开始拆除。该方法继承了Queue
接口相当于Deque
方法如下表所示:
Queue Method |
Equivalent Deque Method |
add(e) |
addLast(e) |
offer(e) |
offerLast(e) |
remove() |
removeFirst() |
poll() |
pollFirst() |
element() |
getFirst() |
peek() |
peekFirst() |
双端队列也可以用作LIFO(后进先出)栈。这个接口应该优先用于遗留Stack
类。当一个deque作为栈元素推出该容器的开始。堆栈的方法相当于Deque
方法如表所示:
Stack Method | Equivalent Deque Method |
push(e) |
addFirst(e) |
pop() |
removeFirst() |
peek() |
peekFirst() |
请注意,peek
方法同样在deque容器作为队列和栈;在任何情况下,元件从deque开始画。
这个接口提供了消除内部元素的两种方法,removeFirstOccurrence
和removeLastOccurrence
。
不像List
接口,这个接口不提供索引访问元素的支持。
而Deque
实现不严格要求禁止空元素的插入,他们强烈鼓励这样做。任何Deque
实现允许null元素强烈鼓励不利用插入空值的能力的用户。这是因为null
作为一个特殊的返回值的各种方法表明,容器是空的。
Deque
实现一般不定义元素的基础版本的equals
和hashCode
方法,而是继承的基于身份的版本从类Object
。
该接口的 Java Collections Framework成员。
Modifier and Type | Method and Description |
---|---|
boolean |
add(E e)
插入指定元素为代表的deque队列(换句话说,在这个队列尾)如果可能立即这样做不违反容量限制,还
true 成功后抛出
IllegalStateException 如果没有空间是可用的。
|
void |
addFirst(E e)
插入指定元素在队列前面是否有可能立即这样做不违反容量限制,抛出一个
IllegalStateException 如果没有空间是可用的。
|
void |
addLast(E e)
插入指定元素在这个队列的最后如果可能立即这样做不违反容量限制,抛出一个
IllegalStateException 如果没有空间是可用的。
|
boolean |
contains(Object o)
如果这两
true 返回包含指定的元素。
|
Iterator<E> |
descendingIterator()
返回在反向顺序在deque容器元素的迭代器。
|
E |
element()
检索,但不删除,这代表的deque队列的头部(换句话说,这个容器的第一个元素)。
|
E |
getFirst()
检索,但不删除该deque容器的第一个元素。
|
E |
getLast()
检索,但不删除该队列的最后一个元素。
|
Iterator<E> |
iterator()
返回以正确的顺序在deque容器元素的迭代器。
|
boolean |
offer(E e)
插入指定元素为代表的deque队列(换句话说,在这个队列尾)如果可能立即这样做不违反容量限制,还
true 在成功和
false 如果没有空间是可用的。
|
boolean |
offerFirst(E e)
插入指定元素在这个队列前面除非它违背了容量限制。
|
boolean |
offerLast(E e)
插入指定元素在这个队列最后除非它违背了容量限制。
|
E |
peek()
检索,但不删除,这代表的deque队列的头部(换句话说,这个容器的第一个元素),或返回
null 如果队列是空的。
|
E |
peekFirst()
检索,但不删除该deque容器的第一个元素,或返回
null 如果队列是空的。
|
E |
peekLast()
检索,但不删除该队列的最后一个元素,或返回
null 如果队列是空的。
|
E |
poll()
检索并移除该deque表示队列的头部(换句话说,这个容器的第一个元素),或返回
null 如果队列是空的。
|
E |
pollFirst()
检索并移除此队列的第一个元素,或返回
null 如果队列是空的。
|
E |
pollLast()
检索并移除此队列的最后一个元素,或返回
null 如果队列是空的。
|
E |
pop()
从这个弹出堆栈队列代表元素。
|
void |
push(E e)
将一个元素到该deque表示堆栈(换句话说,在这个队列的头)如果可能立即这样做不违反容量限制,抛出一个
IllegalStateException 如果没有空间是可用的。
|
E |
remove()
检索并移除该deque表示队列的头部(换句话说,这个容器的第一个元素)。
|
boolean |
remove(Object o)
删除第一个出现的指定元素从这个队列。
|
E |
removeFirst()
检索并移除此队列的第一个元素。
|
boolean |
removeFirstOccurrence(Object o)
删除第一个出现的指定元素从这个队列。
|
E |
removeLast()
检索并移除此队列的最后一个元素。
|
boolean |
removeLastOccurrence(Object o)
移除指定元素的最后出现从这个队列。
|
int |
size()
返回该容器元素的数量。
|
addAll, clear, containsAll, equals, hashCode, isEmpty, parallelStream, removeAll, removeIf, retainAll, spliterator, stream, toArray, toArray
void addFirst(E e)
IllegalStateException
如果没有空间是可用的。使用容量限制容器时,它是通常最好使用方法
offerFirst(E)
。
e
-元素添加
IllegalStateException
-如果元素不能被添加在这个时候由于产能限制
ClassCastException
-如果指定元素类型阻止其加入队列
NullPointerException
-如果指定元素为null,这的确不允许null元素
IllegalArgumentException
-如果指定元素的一些特性阻止其加入队列
void addLast(E e)
IllegalStateException
如果没有空间是可用的。使用容量限制容器时,它是通常最好使用方法
offerLast(E)
。
这种方法相当于add(E)
。
e
-元素添加
IllegalStateException
-如果元素不能被添加在这个时候由于产能限制
ClassCastException
-如果指定元素类型阻止其加入队列
NullPointerException
-如果指定元素为null,这的确不允许null元素
IllegalArgumentException
-如果指定元素的一些特性阻止其加入队列
boolean offerFirst(E e)
addFirst(E)
方法,可不能只通过抛出异常,插入一个元素。
e
-元素添加
true
如果元素被添加到这个容器,其他
false
ClassCastException
-如果指定元素类型阻止其加入队列
NullPointerException
-如果指定元素为null,这的确不允许null元素
IllegalArgumentException
-如果指定元素的一些特性阻止其加入队列
boolean offerLast(E e)
addLast(E)
方法,可不能只通过抛出异常,插入一个元素。
e
-元素添加
true
如果元素被添加到这个容器,其他
false
ClassCastException
-如果指定元素类型阻止其加入队列
NullPointerException
-如果指定元素为null,这的确不允许null元素
IllegalArgumentException
-如果指定元素的一些特性阻止其加入队列
E removeFirst()
pollFirst
仅在于它抛出一个异常,如果这个容器是空的。
NoSuchElementException
-如果这队列是空的
E removeLast()
pollLast
仅在于它抛出一个异常,如果这个容器是空的。
NoSuchElementException
-如果这队列是空的
E pollFirst()
null
如果队列是空的。
null
如果队列是空的
E pollLast()
null
如果队列是空的。
null
如果队列是空的
E getFirst()
peekFirst
仅在于它抛出一个异常,如果这个容器是空的。
NoSuchElementException
-如果这队列是空的
E getLast()
peekLast
仅在于它抛出一个异常,如果这个容器是空的。
NoSuchElementException
-如果这队列是空的
E peekFirst()
null
如果队列是空的。
null
如果队列是空的
E peekLast()
null
如果队列是空的。
null
如果队列是空的
boolean removeFirstOccurrence(Object o)
e
这样
(o==null ? e==null : o.equals(e))(如果这种元素的存在)。如果这两
true
返回包含指定元素(或等价地,如果调用的结果这的确改变了)。
o
元要从队列移除,如果存在
true
如果元素是作为一个结果,这叫删除
ClassCastException
如果指定元素的类是不兼容的(这两
optional)
NullPointerException
-如果指定元素为null,这的确不允许null元素(
optional)
boolean removeLastOccurrence(Object o)
e
(如果这样一个元素存在)。如果这两
true
返回包含指定元素(或等价地,如果调用的结果这的确改变了)。
o
元要从队列移除,如果存在
true
如果元素是作为一个结果,这叫删除
ClassCastException
如果指定元素的类是不兼容的(这两
optional)
NullPointerException
-如果指定元素为null,这的确不允许null元素(
optional)
boolean add(E e)
true
成功后抛出
IllegalStateException
如果没有空间是可用的。使用容量限制容器时,它是通常最好使用
offer
。
这种方法相当于addLast(E)
。
add
接口
Collection<E>
add
接口
Queue<E>
e
-元素添加
true
(由
Collection.add(E)
指定)
IllegalStateException
-如果元素不能被添加在这个时候由于产能限制
ClassCastException
-如果指定元素类型阻止其加入队列
NullPointerException
-如果指定元素为null,这的确不允许null元素
IllegalArgumentException
-如果指定元素的一些特性阻止其加入队列
boolean offer(E e)
true
在成功和
false
如果没有空间是可用的。使用容量限制队列时,这种方法是最好的
add(E)
方法,可不能只通过抛出异常,插入一个元素。
这种方法相当于offerLast(E)
。
offer
接口
Queue<E>
e
-元素添加
true
如果元素被添加到这个容器,其他
false
ClassCastException
-如果指定元素类型阻止其加入队列
NullPointerException
-如果指定元素为null,这的确不允许null元素
IllegalArgumentException
-如果指定元素的一些特性阻止其加入队列
E remove()
poll
仅在于它抛出一个异常,如果这个容器是空的。
这种方法相当于removeFirst()
。
remove
接口
Queue<E>
NoSuchElementException
-如果这队列是空的
E poll()
null
如果队列是空的。
这种方法相当于pollFirst()
。
E element()
peek
仅在于它抛出一个异常,如果这个容器是空的。
这种方法相当于getFirst()
。
element
接口
Queue<E>
NoSuchElementException
-如果这队列是空的
E peek()
null
如果队列是空的。
这种方法相当于peekFirst()
。
void push(E e)
IllegalStateException
如果没有空间是可用的。
这种方法相当于addFirst(E)
。
e
-元推
IllegalStateException
-如果元素不能被添加在这个时候由于产能限制
ClassCastException
-如果指定元素类型阻止其加入队列
NullPointerException
-如果指定元素为null,这的确不允许null元素
IllegalArgumentException
-如果指定元素的一些特性阻止其加入队列
E pop()
这种方法相当于removeFirst()
。
NoSuchElementException
-如果这队列是空的
boolean remove(Object o)
e
(如果这样一个元素存在)。如果这两
true
返回包含指定元素(或等价地,如果调用的结果这的确改变了)。
这种方法相当于removeFirstOccurrence(Object)
。
remove
接口
Collection<E>
o
元要从队列移除,如果存在
true
如果元素是作为一个结果,这叫删除
ClassCastException
如果指定元素的类是不兼容的(这两
optional)
NullPointerException
-如果指定元素为null,这的确不允许null元素(
optional)
boolean contains(Object o)
true
返回包含指定的元素。更正式地说,返回
true
当且仅当这个容器包含至少一个元素
e
这样
(o==null ? e==null : o.equals(e))。
contains
接口
Collection<E>
o
-这的确存在的元素进行测试
true
包含指定的元素
ClassCastException
-如果指定元素的类型与此队列不相容(
optional)
NullPointerException
-如果指定元素为null,这的确不允许null元素(
optional)
int size()
size
接口
Collection<E>
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.