|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
E
- 此 collection 中保存的元素型別public interface Deque<E>
一個線性 collection,支持在兩端插入和移除元素。名稱 deque 是“double ended queue(雙端佇列)”的縮寫,通常讀為“deck”。大多數 Deque 實作對於它們能夠包含的元素數沒有固定限制,但此介面既支持有容量限制的雙端佇列,也支持沒有固定大小限制的雙端佇列。
此介面定義在雙端佇列兩端存取元素的方法。提供插入、移除和檢查元素的方法。每種方法都存在兩種形式:一種形式在操作失敗時拋出異常,另一種形式返回一個特殊值(null 或 false,具體取決於操作)。插入操作的後一種形式是專為使用有容量限制的 Deque 實作設計的;在大多數實作中,插入操作不能失敗。
下表總結了上述 12 種方法:
第一個元素(頭部) | 最後一個元素(尾部) | |||
拋出異常 | 特殊值 | 拋出異常 | 特殊值 | |
插入 | addFirst(e) |
offerFirst(e) |
addLast(e) |
offerLast(e) |
移除 | removeFirst() |
pollFirst() |
removeLast() |
pollLast() |
檢查 | getFirst() |
peekFirst() |
getLast() |
peekLast() |
此介面擴展了 Queue
介面。在將雙端佇列用作佇列時,將得到 FIFO(先進先出)行為。將元素添加到雙端佇列的末尾,從雙端佇列的開頭移除元素。從 Queue 介面繼承的方法完全等效於 Deque 方法,如下表所示:
Queue 方法 | 等效 Deque 方法 |
add(e) |
addLast(e) |
offer(e) |
offerLast(e) |
remove() |
removeFirst() |
poll() |
pollFirst() |
element() |
getFirst() |
peek() |
peekFirst() |
雙端佇列也可用作 LIFO(後進先出)堆疊(stack)空間。應優先使用此介面而不是遺留 Stack
類別。在將雙端佇列用作堆疊(stack)空間時,元素被推入雙端佇列的開頭並從雙端佇列開頭彈出。堆疊(stack)空間方法完全等效於 Deque 方法,如下表所示:
堆疊(stack)空間方法 | 等效 Deque 方法 |
push(e) |
addFirst(e) |
pop() |
removeFirst() |
peek() |
peekFirst() |
注意,在將雙端佇列用作佇列或堆疊(stack)空間時,peek
方法同樣正常工作;無論哪種情況下,都從雙端佇列的開頭抽取元素。
此介面提供了兩種移除內部元素的方法:removeFirstOccurrence
和 removeLastOccurrence
。
與 List
介面不同,此介面不支持通過索引存取元素。
雖然 Deque 實作沒有嚴格要求禁止插入 null 元素,但建議最好這樣做。建議任何事實上允許 null 元素的 Deque 實作使用者最好不 要利用插入 null 的功能。這是因為各種方法會將 null 用作特殊的返回值來指示雙端佇列為空。
Deque 實作通常不定義基於元素的 equals 和 hashCode 方法,而是從 Object 類別繼承基於身份的 equals 和 hashCode 方法。
此介面是 Java Collections Framework 的成員。
方法摘要 | |
---|---|
boolean |
add(E e)
將指定元素插入此雙端佇列所表示的佇列(換句話說,此雙端佇列的尾部),如果可以直接這樣做而不違反容量限制的話;如果成功,則返回 true,如果當前沒有可用空間,則拋出 IllegalStateException。 |
void |
addFirst(E e)
將指定元素插入此雙端佇列的開頭(如果可以直接這樣做而不違反容量限制)。 |
void |
addLast(E e)
將指定元素插入此雙端佇列的末尾(如果可以直接這樣做而不違反容量限制)。 |
boolean |
contains(Object o)
如果此雙端佇列包含指定元素,則返回 true。 |
Iterator<E> |
descendingIterator()
返回以逆向順序在此雙端佇列的元素上進行迭代的迭代器。 |
E |
element()
獲取,但不移除此雙端佇列所表示的佇列的頭部(換句話說,此雙端佇列的第一個元素)。 |
E |
getFirst()
獲取,但不移除此雙端佇列的第一個元素。 |
E |
getLast()
獲取,但不移除此雙端佇列的最後一個元素。 |
Iterator<E> |
iterator()
返回以恰當順序在此雙端佇列的元素上進行迭代的迭代器。 |
boolean |
offer(E e)
將指定元素插入此雙端佇列所表示的佇列(換句話說,此雙端佇列的尾部),如果可以直接這樣做而不違反容量限制的話;如果成功,則返回 true,如果當前沒有可用的空間,則返回 false。 |
boolean |
offerFirst(E e)
在不違反容量限制的情況下,將指定的元素插入此雙端佇列的開頭。 |
boolean |
offerLast(E e)
在不違反容量限制的情況下,將指定的元素插入此雙端佇列的末尾。 |
E |
peek()
獲取,但不移除此雙端佇列所表示的佇列的頭部(換句話說,此雙端佇列的第一個元素);如果此雙端佇列為空,則返回 null。 |
E |
peekFirst()
獲取,但不移除此雙端佇列的第一個元素;如果此雙端佇列為空,則返回 null。 |
E |
peekLast()
獲取,但不移除此雙端佇列的最後一個元素;如果此雙端佇列為空,則返回 null。 |
E |
poll()
獲取並移除此雙端佇列所表示的佇列的頭部(換句話說,此雙端佇列的第一個元素);如果此雙端佇列為空,則返回 null。 |
E |
pollFirst()
獲取並移除此雙端佇列的第一個元素;如果此雙端佇列為空,則返回 null。 |
E |
pollLast()
獲取並移除此雙端佇列的最後一個元素;如果此雙端佇列為空,則返回 null。 |
E |
pop()
從此雙端佇列所表示的堆疊(stack)空間中彈出一個元素。 |
void |
push(E e)
將一個元素推入此雙端佇列所表示的堆疊(stack)空間(換句話說,此雙端佇列的頭部),如果可以直接這樣做而不違反容量限制的話;如果成功,則返回 true,如果當前沒有可用空間,則拋出 IllegalStateException。 |
E |
remove()
獲取並移除此雙端佇列所表示的佇列的頭部(換句話說,此雙端佇列的第一個元素)。 |
boolean |
remove(Object o)
從此雙端佇列中移除第一次出現的指定元素。 |
E |
removeFirst()
獲取並移除此雙端佇列第一個元素。 |
boolean |
removeFirstOccurrence(Object o)
從此雙端佇列移除第一次出現的指定元素。 |
E |
removeLast()
獲取並移除此雙端佇列的最後一個元素。 |
boolean |
removeLastOccurrence(Object o)
從此雙端佇列移除最後一次出現的指定元素。 |
int |
size()
返回此雙端佇列的元素數。 |
從介面 java.util.Collection 繼承的方法 |
---|
addAll, clear, containsAll, equals, hashCode, isEmpty, removeAll, retainAll, toArray, toArray |
方法詳細資訊 |
---|
void addFirst(E e)
offerFirst(E)
方法。
e
- 要添加的元素
IllegalStateException
- 如果此時由於容量限制而無法添加元素
ClassCastException
- 如果指定元素的類別不允許將它添加此雙端佇列
NullPointerException
- 如果指定元素為 null,並且此雙端佇列不允許 null 元素
IllegalArgumentException
- 如果指定元素的某些屬性不允許將它添加到此雙端佇列void addLast(E e)
offerLast(E)
方法。
此方法等效於 add(E)
。
e
- 要添加的元素
IllegalStateException
- 如果此時由於容量限制而無法添加元素
ClassCastException
- 如果指定元素的類別不允許將它添加此雙端佇列
NullPointerException
- 如果指定元素為 null,並且此雙端佇列不允許 null 元素
IllegalArgumentException
- 如果指定元素的某些屬性不允許將它添加到此雙端佇列boolean offerFirst(E e)
addFirst(E)
方法,後者可能無法插入元素,而只是拋出一個異常。
e
- 要添加的元素
ClassCastException
- 如果指定元素的類別不允許將它添加到此雙端佇列
NullPointerException
- 如果指定元素為 null,並且此雙端佇列不允許 null 元素
IllegalArgumentException
- 如果指定元素的某些屬性不允許將它添加到此雙端佇列boolean offerLast(E e)
addLast(E)
方法,後者可能無法插入元素,而只是拋出一個異常。
e
- 要添加的元素
ClassCastException
- 如果指定元素的類別不允許將它添加到此雙端佇列
NullPointerException
- 如果指定元素為 null,並且此雙端佇列不允許 null 元素
IllegalArgumentException
- 如果指定元素的某些屬性不允許將它添加到此雙端佇列E removeFirst()
pollFirst
唯一的不同在於:如果此雙端佇列為空,它將拋出一個異常。
NoSuchElementException
- 如果此雙端佇列為空E removeLast()
pollLast
唯一的不同在於:如果此雙端佇列為空,它將拋出一個異常。
NoSuchElementException
- 如果此雙端佇列為空E pollFirst()
E pollLast()
E getFirst()
peekFirst
唯一的不同在於:如果此雙端佇列為空,它將拋出一個異常。
NoSuchElementException
- 如果此雙端佇列為空E getLast()
peekLast
唯一的不同在於:如果此雙端佇列為空,它將拋出一個異常。
NoSuchElementException
- 如果此雙端佇列為空E peekFirst()
E peekLast()
boolean removeFirstOccurrence(Object o)
o
- 要從此雙端佇列移除的元素(如果存在)
ClassCastException
- 如果指定元素的類別與此雙端佇列不相容(可選)
NullPointerException
- 如果指定元素為 null,並且此雙端佇列不允許 null 元素(可選)boolean removeLastOccurrence(Object o)
o
- 要從此雙端佇列移除的元素(如果存在)
ClassCastException
- 如果指定元素的類別與此雙端佇列不相容(可選)
NullPointerException
- 如果指定元素為 null,並且此雙端佇列不允許 null 元素(可選)boolean add(E e)
offer
。
此方法等效於 addLast(E)
。
Collection<E>
中的 add
Queue<E>
中的 add
e
- 要添加的元素
Collection.add(E)
的規定)
IllegalStateException
- 如果此時由於容量限制而無法添加元素
ClassCastException
- 如果指定元素的類別不允許將它添加到此雙端佇列
NullPointerException
- 如果指定元素為 null,並且此雙端佇列不支持 null 元素
IllegalArgumentException
- 如果指定元素的某些屬性不允許將它添加到此雙端佇列boolean offer(E e)
add(E)
方法,後者可能無法插入元素,而只是拋出一個異常。
此方法等效於 offerLast(E)
。
Queue<E>
中的 offer
e
- 要添加的元素
ClassCastException
- 如果指定元素的類別不允許將它添加到此雙端佇列
NullPointerException
- 如果指定元素為 null,並且此雙端佇列不允許 null 元素
IllegalArgumentException
- 如果指定元素的某些屬性不允許將它添加到此雙端佇列E remove()
poll
的唯一不同在於:如果此雙端佇列為空,它將拋出一個異常。
此方法等效於 removeFirst()
。
Queue<E>
中的 remove
NoSuchElementException
- 如果此雙端佇列為空E poll()
此方法等效於 pollFirst()
。
Queue<E>
中的 poll
E element()
peek
唯一的不同在於:如果此雙端佇列為空,它將拋出一個異常。
此方法等效於 getFirst()
。
Queue<E>
中的 element
NoSuchElementException
- 如果此雙端佇列為空E peek()
此方法等效於 peekFirst()
。
Queue<E>
中的 peek
void push(E e)
此方法等效於 addFirst(E)
。
e
- 要推入的元素
IllegalStateException
- 如果此時由於容量限制而無法添加元素
ClassCastException
- 如果指定元素的類別不允許將它添加此雙端佇列
NullPointerException
- 如果指定元素為 null,並且此雙端佇列不允許 null 元素
IllegalArgumentException
- 如果指定元素的某些屬性不允許將它添加到此雙端佇列E pop()
此方法等效於 removeFirst()
。
NoSuchElementException
- 如果此雙端佇列為空boolean remove(Object o)
此方法等效於 removeFirstOccurrence(java.lang.Object)
。
Collection<E>
中的 remove
o
- 要從此雙端佇列移除的元素(如果存在)
ClassCastException
- 如果指定元素的類別與此雙端佇列不相容(可選)
NullPointerException
- 如果指定元素為 null,並且此雙端佇列不允許 null 元素(可選)boolean contains(Object o)
Collection<E>
中的 contains
o
- 要測試其是否存在於此雙端佇列的元素
ClassCastException
- 如果指定的元素型別與此雙端佇列不相容(可選)
NullPointerException
- 如果指定元素為 null,並且此雙端佇列不允許 null 元素(可選)int size()
Collection<E>
中的 size
Iterator<E> iterator()
Collection<E>
中的 iterator
Iterable<E>
中的 iterator
Iterator<E> descendingIterator()
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。