|
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> 中的 addQueue<E> 中的 adde - 要添加的元素
Collection.add(E) 的規定)
IllegalStateException - 如果此時由於容量限制而無法添加元素
ClassCastException - 如果指定元素的類別不允許將它添加到此雙端佇列
NullPointerException - 如果指定元素為 null,並且此雙端佇列不支持 null 元素
IllegalArgumentException - 如果指定元素的某些屬性不允許將它添加到此雙端佇列boolean offer(E e)
add(E) 方法,後者可能無法插入元素,而只是拋出一個異常。
此方法等效於 offerLast(E)。
Queue<E> 中的 offere - 要添加的元素
ClassCastException - 如果指定元素的類別不允許將它添加到此雙端佇列
NullPointerException - 如果指定元素為 null,並且此雙端佇列不允許 null 元素
IllegalArgumentException - 如果指定元素的某些屬性不允許將它添加到此雙端佇列E remove()
poll 的唯一不同在於:如果此雙端佇列為空,它將拋出一個異常。
此方法等效於 removeFirst()。
Queue<E> 中的 removeNoSuchElementException - 如果此雙端佇列為空E poll()
此方法等效於 pollFirst()。
Queue<E> 中的 pollE element()
peek 唯一的不同在於:如果此雙端佇列為空,它將拋出一個異常。
此方法等效於 getFirst()。
Queue<E> 中的 elementNoSuchElementException - 如果此雙端佇列為空E peek()
此方法等效於 peekFirst()。
Queue<E> 中的 peekvoid 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> 中的 removeo - 要從此雙端佇列移除的元素(如果存在)
ClassCastException - 如果指定元素的類別與此雙端佇列不相容(可選)
NullPointerException - 如果指定元素為 null,並且此雙端佇列不允許 null 元素(可選)boolean contains(Object o)
Collection<E> 中的 containso - 要測試其是否存在於此雙端佇列的元素
ClassCastException - 如果指定的元素型別與此雙端佇列不相容(可選)
NullPointerException - 如果指定元素為 null,並且此雙端佇列不允許 null 元素(可選)int size()
Collection<E> 中的 sizeIterator<E> iterator()
Collection<E> 中的 iteratorIterable<E> 中的 iteratorIterator<E> descendingIterator()
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。