|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.util.AbstractCollection<E> java.util.AbstractQueue<E> java.util.concurrent.LinkedBlockingDeque<E>
E
- 保存在此 collection 中的元素型別public class LinkedBlockingDeque<E>
一個基於已連接節點的、任選範圍的阻塞雙端佇列。
可選的容量範圍建構子參數是一種防止過度膨脹的方式。如果未指定容量,那麼容量將等於 Integer.MAX_VALUE
。只要插入元素不會使雙端佇列超出容量,每次插入後都將動態地創建連接節點。
大多數操作都以固定時間運行(不計阻塞消耗的時間)。異常包括 remove
、removeFirstOccurrence
、removeLastOccurrence
、contains
、iterator.remove()
以及批量操作,它們均以線性時間運行。
此類別及其迭代器實作 Collection
和 Iterator
介面的所有可選 方法。
此類別是 Java Collections Framework 的成員。
建構子摘要 | |
---|---|
LinkedBlockingDeque()
創建一個容量為 Integer.MAX_VALUE 的 LinkedBlockingDeque。 |
|
LinkedBlockingDeque(Collection<? extends E> c)
創建一個容量為 Integer.MAX_VALUE 的 LinkedBlockingDeque,最初包含給定 collection 的元素,以該 collection 迭代器的遍歷順序添加。 |
|
LinkedBlockingDeque(int capacity)
創建一個具有給定(固定)容量的 LinkedBlockingDeque。 |
方法摘要 | ||
---|---|---|
boolean |
add(E e)
在不違反容量限制的情況下,將指定的元素插入此雙端佇列的末尾。 |
|
void |
addFirst(E e)
如果立即可行且不違反容量限制,則將指定的元素插入此雙端佇列的開頭;如果當前沒有空間可用,則拋出 IllegalStateException。 |
|
void |
addLast(E e)
如果立即可行且不違反容量限制,則將指定的元素插入此雙端佇列的末尾;如果當前沒有空間可用,則拋出 IllegalStateException。 |
|
void |
clear()
以原子方式 (atomically) 從此雙端佇列移除所有元素。 |
|
boolean |
contains(Object o)
如果此雙端佇列包含指定的元素,則返回 true。 |
|
Iterator<E> |
descendingIterator()
返回在此雙端佇列的元素上以逆向連續順序進行迭代的迭代器。 |
|
int |
drainTo(Collection<? super E> c)
移除此佇列中所有可用的元素,並將它們添加到給定 collection 中。 |
|
int |
drainTo(Collection<? super E> c,
int maxElements)
最多從此佇列中移除給定數量的可用元素,並將這些元素添加到給定 collection 中。 |
|
E |
element()
獲取但不移除此雙端佇列表示的佇列的頭部。 |
|
E |
getFirst()
獲取,但不移除此雙端佇列的第一個元素。 |
|
E |
getLast()
獲取,但不移除此雙端佇列的最後一個元素。 |
|
Iterator<E> |
iterator()
返回在此雙端佇列元素上以恰當順序進行迭代的迭代器。 |
|
boolean |
offer(E e)
如果立即可行且不違反容量限制,則將指定的元素插入此雙端佇列表示的佇列中(即此雙端佇列的尾部),並在成功時返回 true;如果當前沒有空間可用,則返回 false。 |
|
boolean |
offer(E e,
long timeout,
TimeUnit unit)
將指定的元素插入此雙端佇列表示的佇列中(即此雙端佇列的尾部),必要時將在指定的等待時間內一直等待可用空間。 |
|
boolean |
offerFirst(E e)
如果立即可行且不違反容量限制,則將指定的元素插入此雙端佇列的開頭,並在成功時返回 true;如果當前沒有空間可用,則返回 false。 |
|
boolean |
offerFirst(E e,
long timeout,
TimeUnit unit)
將指定的元素插入此雙端佇列的開頭,必要時將在指定的等待時間內等待可用空間。 |
|
boolean |
offerLast(E e)
如果立即可行且不違反容量限制,則將指定的元素插入此雙端佇列的末尾,並在成功時返回 true;如果當前沒有空間可用,則返回 false。 |
|
boolean |
offerLast(E e,
long timeout,
TimeUnit unit)
將指定的元素插入此雙端佇列的末尾,必要時將在指定的等待時間內等待可用空間。 |
|
E |
peek()
獲取但不移除此雙端佇列表示的佇列的頭部(即此雙端佇列的第一個元素);如果此雙端佇列為空,則返回 null。 |
|
E |
peekFirst()
獲取,但不移除此雙端佇列的第一個元素;如果此雙端佇列為空,則返回 null。 |
|
E |
peekLast()
獲取,但不移除此雙端佇列的最後一個元素;如果此雙端佇列為空,則返回 null。 |
|
E |
poll()
獲取並移除此雙端佇列表示的佇列的頭部(即此雙端佇列的第一個元素);如果此雙端佇列為空,則返回 null。 |
|
E |
poll(long timeout,
TimeUnit unit)
獲取並移除此雙端佇列表示的佇列的頭部(即此雙端佇列的第一個元素),如有必要將在指定的等待時間內等待可用元素。 |
|
E |
pollFirst()
獲取並移除此雙端佇列的第一個元素;如果此雙端佇列為空,則返回 null。 |
|
E |
pollFirst(long timeout,
TimeUnit unit)
獲取並移除此雙端佇列的第一個元素,必要時將在指定的等待時間等待可用元素。 |
|
E |
pollLast()
獲取並移除此雙端佇列的最後一個元素;如果此雙端佇列為空,則返回 null。 |
|
E |
pollLast(long timeout,
TimeUnit unit)
獲取並移除此雙端佇列的最後一個元素,必要時將在指定的等待時間內等待可用元素。 |
|
E |
pop()
從此雙端佇列所表示的堆疊(stack)空間中彈出一個元素。 |
|
void |
push(E e)
將元素推入此雙端佇列表示的堆疊(stack)空間。 |
|
void |
put(E e)
將指定的元素插入此雙端佇列表示的佇列中(即此雙端佇列的尾部),必要時將一直等待可用空間。 |
|
void |
putFirst(E e)
將指定的元素插入此雙端佇列的開頭,必要時將一直等待可用空間。 |
|
void |
putLast(E e)
將指定的元素插入此雙端佇列的末尾,必要時將一直等待可用空間。 |
|
int |
remainingCapacity()
返回理想情況下(沒有記憶體和資源約束)此雙端佇列可不受阻塞地接受的額外元素數。 |
|
E |
remove()
獲取並移除此雙端佇列表示的佇列的頭部。 |
|
boolean |
remove(Object o)
從此雙端佇列移除第一次出現的指定元素。 |
|
E |
removeFirst()
獲取並移除此雙端佇列第一個元素。 |
|
boolean |
removeFirstOccurrence(Object o)
從此雙端佇列移除第一次出現的指定元素。 |
|
E |
removeLast()
獲取並移除此雙端佇列的最後一個元素。 |
|
boolean |
removeLastOccurrence(Object o)
從此雙端佇列移除最後一次出現的指定元素。 |
|
int |
size()
返回此雙端佇列中的元素數。 |
|
E |
take()
獲取並移除此雙端佇列表示的佇列的頭部(即此雙端佇列的第一個元素),必要時將一直等待可用元素。 |
|
E |
takeFirst()
獲取並移除此雙端佇列的第一個元素,必要時將一直等待可用元素。 |
|
E |
takeLast()
獲取並移除此雙端佇列的最後一個元素,必要時將一直等待可用元素。 |
|
Object[] |
toArray()
返回以恰當順序(從第一個元素到最後一個元素)包含此雙端佇列所有元素的陣列。 |
|
|
toArray(T[] a)
返回以恰當順序包含此雙端佇列所有元素的陣列;返回陣列的運行時型別是指定陣列的運行時型別。 |
|
String |
toString()
返回此 collection 的字元串表示形式。 |
從類別 java.util.AbstractQueue 繼承的方法 |
---|
addAll |
從類別 java.util.AbstractCollection 繼承的方法 |
---|
containsAll, isEmpty, removeAll, retainAll |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
從介面 java.util.Collection 繼承的方法 |
---|
addAll, containsAll, equals, hashCode, isEmpty, removeAll, retainAll |
建構子詳細資訊 |
---|
public LinkedBlockingDeque()
Integer.MAX_VALUE
的 LinkedBlockingDeque。
public LinkedBlockingDeque(int capacity)
capacity
- 此雙端佇列的容量
IllegalArgumentException
- 如果 capacity 小於 1public LinkedBlockingDeque(Collection<? extends E> c)
Integer.MAX_VALUE
的 LinkedBlockingDeque,最初包含給定 collection 的元素,以該 collection 迭代器的遍歷順序添加。
c
- 最初所包含元素所屬的 collection
NullPointerException
- 如果指定 collection 或其任意元素為 null方法詳細資訊 |
---|
public void addFirst(E e)
BlockingDeque
複製的描述offerFirst
。
BlockingDeque<E>
中的 addFirst
Deque<E>
中的 addFirst
e
- 要添加的元素
IllegalStateException
- 如果此時由於容量限制而無法添加元素
NullPointerException
- 如果指定的元素為 nullpublic void addLast(E e)
BlockingDeque
複製的描述offerLast
。
BlockingDeque<E>
中的 addLast
Deque<E>
中的 addLast
e
- 要添加的元素
IllegalStateException
- 如果此時由於容量限制而無法添加元素
NullPointerException
- 如果指定的元素為 nullpublic boolean offerFirst(E e)
BlockingDeque
複製的描述addFirst
方法,後者可能無法插入元素,而只是拋出一個異常。
BlockingDeque<E>
中的 offerFirst
Deque<E>
中的 offerFirst
e
- 要添加的元素
NullPointerException
- 如果指定的元素為 nullpublic boolean offerLast(E e)
BlockingDeque
複製的描述addLast
方法,後者可能無法插入元素,而只是拋出一個異常。
BlockingDeque<E>
中的 offerLast
Deque<E>
中的 offerLast
e
- 要添加的元素
NullPointerException
- 如果指定的元素為 nullpublic void putFirst(E e) throws InterruptedException
BlockingDeque
複製的描述
BlockingDeque<E>
中的 putFirst
e
- 要添加的元素
NullPointerException
- 如果指定的元素為 null
InterruptedException
- 如果在等待時被中斷public void putLast(E e) throws InterruptedException
BlockingDeque
複製的描述
BlockingDeque<E>
中的 putLast
e
- 要添加的元素
NullPointerException
- 如果指定的元素為 null
InterruptedException
- 如果在等待時被中斷public boolean offerFirst(E e, long timeout, TimeUnit unit) throws InterruptedException
BlockingDeque
複製的描述
BlockingDeque<E>
中的 offerFirst
e
- 要添加的元素timeout
- 放棄之前等待的時間長度,以 unit 為時間單位unit
- 確定如何解釋 timeout 參數的 TimeUnit
NullPointerException
- 如果指定的元素為 null
InterruptedException
- 如果在等待時被中斷public boolean offerLast(E e, long timeout, TimeUnit unit) throws InterruptedException
BlockingDeque
複製的描述
BlockingDeque<E>
中的 offerLast
e
- 要添加的元素timeout
- 放棄之前等待的時間長度,以 unit 為時間單位unit
- 確定如何解釋 timeout 參數的 TimeUnit
NullPointerException
- 如果指定的元素為 null
InterruptedException
- 如果在等待時被中斷public E removeFirst()
Deque
複製的描述pollFirst
唯一的不同在於:如果此雙端佇列為空,它將拋出一個異常。
Deque<E>
中的 removeFirst
NoSuchElementException
- 如果此雙端佇列為空public E removeLast()
Deque
複製的描述pollLast
唯一的不同在於:如果此雙端佇列為空,它將拋出一個異常。
Deque<E>
中的 removeLast
NoSuchElementException
- 如果此雙端佇列為空public E pollFirst()
Deque
複製的描述
Deque<E>
中的 pollFirst
public E pollLast()
Deque
複製的描述
Deque<E>
中的 pollLast
public E takeFirst() throws InterruptedException
BlockingDeque
複製的描述
BlockingDeque<E>
中的 takeFirst
InterruptedException
- 如果在等待時被中斷public E takeLast() throws InterruptedException
BlockingDeque
複製的描述
BlockingDeque<E>
中的 takeLast
InterruptedException
- 如果在等待時被中斷public E pollFirst(long timeout, TimeUnit unit) throws InterruptedException
BlockingDeque
複製的描述
BlockingDeque<E>
中的 pollFirst
timeout
- 放棄之前等待的時間長度,以 unit 為時間單位unit
- 確定如何解釋 timeout 參數的 TimeUnit
InterruptedException
- 如果在等待時被中斷public E pollLast(long timeout, TimeUnit unit) throws InterruptedException
BlockingDeque
複製的描述
BlockingDeque<E>
中的 pollLast
timeout
- 放棄之前等待的時間長度,以 unit 為時間單位unit
- 確定如何解釋 timeout 參數的 TimeUnit
InterruptedException
- 如果在等待時被中斷public E getFirst()
Deque
複製的描述peekFirst
唯一的不同在於:如果此雙端佇列為空,它將拋出一個異常。
Deque<E>
中的 getFirst
NoSuchElementException
- 如果此雙端佇列為空public E getLast()
Deque
複製的描述peekLast
唯一的不同在於:如果此雙端佇列為空,它將拋出一個異常。
Deque<E>
中的 getLast
NoSuchElementException
- 如果此雙端佇列為空public E peekFirst()
Deque
複製的描述
Deque<E>
中的 peekFirst
public E peekLast()
Deque
複製的描述
Deque<E>
中的 peekLast
public boolean removeFirstOccurrence(Object o)
BlockingDeque
複製的描述
BlockingDeque<E>
中的 removeFirstOccurrence
Deque<E>
中的 removeFirstOccurrence
o
- 要從此雙端佇列移除的元素(如果存在)
public boolean removeLastOccurrence(Object o)
BlockingDeque
複製的描述
BlockingDeque<E>
中的 removeLastOccurrence
Deque<E>
中的 removeLastOccurrence
o
- 要從此雙端佇列移除的元素(如果存在)
public boolean add(E e)
offer
方法。
此方法等效於 addLast(E)
。
Collection<E>
中的 add
BlockingDeque<E>
中的 add
BlockingQueue<E>
中的 add
Deque<E>
中的 add
Queue<E>
中的 add
AbstractQueue<E>
中的 add
e
- 要添加的元素
Collection.add(E)
的規定)
IllegalStateException
- 如果此刻由於容量限制而無法添加元素
NullPointerException
- 如果指定的元素為 nullpublic boolean offer(E e)
BlockingDeque
複製的描述BlockingDeque.add(E)
方法,後者可能無法插入元素,而只是拋出一個異常。
此方法等效於 offerLast
。
BlockingDeque<E>
中的 offer
BlockingQueue<E>
中的 offer
Deque<E>
中的 offer
Queue<E>
中的 offer
e
- 要添加的元素
NullPointerException
- 如果指定的元素為 nullpublic void put(E e) throws InterruptedException
BlockingDeque
複製的描述此方法等效於 putLast
。
BlockingDeque<E>
中的 put
BlockingQueue<E>
中的 put
e
- 要添加的元素
NullPointerException
- 如果指定的元素為 null
InterruptedException
- 如果在等待時被中斷public boolean offer(E e, long timeout, TimeUnit unit) throws InterruptedException
BlockingDeque
複製的描述此方法等效於 offerLast
。
BlockingDeque<E>
中的 offer
BlockingQueue<E>
中的 offer
e
- 要添加的元素timeout
- 放棄之前等待的時間長度,以 unit 為時間單位unit
- 確定如何解釋 timeout 參數的 TimeUnit
NullPointerException
- 如果指定的元素為 null
InterruptedException
- 如果在等待時被中斷public E remove()
poll
的不同之處在於:如果此雙端佇列為空,它將拋出一個異常。
此方法等效於 removeFirst
。
BlockingDeque<E>
中的 remove
Deque<E>
中的 remove
Queue<E>
中的 remove
AbstractQueue<E>
中的 remove
NoSuchElementException
- 如果此雙端佇列為空public E poll()
BlockingDeque
複製的描述此方法等效於 Deque.pollFirst()
。
BlockingDeque<E>
中的 poll
Deque<E>
中的 poll
Queue<E>
中的 poll
public E take() throws InterruptedException
BlockingDeque
複製的描述此方法等效於 takeFirst
。
BlockingDeque<E>
中的 take
BlockingQueue<E>
中的 take
InterruptedException
- 如果在等待時被中斷public E poll(long timeout, TimeUnit unit) throws InterruptedException
BlockingDeque
複製的描述此方法等效於 pollFirst
。
BlockingDeque<E>
中的 poll
BlockingQueue<E>
中的 poll
timeout
- 放棄之前要等待的時間長度,用 unit 的時間單位表示unit
- 確定如何解釋 timeout 參數的 TimeUnit
InterruptedException
- 如果在等待時被中斷public E element()
peek
的不同之處在於:如果此雙端佇列為空,它將拋出一個異常。
此方法等效於 getFirst
。
BlockingDeque<E>
中的 element
Deque<E>
中的 element
Queue<E>
中的 element
AbstractQueue<E>
中的 element
NoSuchElementException
- 如果此雙端佇列為空public E peek()
BlockingDeque
複製的描述此方法等效於 peekFirst
。
BlockingDeque<E>
中的 peek
Deque<E>
中的 peek
Queue<E>
中的 peek
public int remainingCapacity()
注意,不能 總是通過檢查 remainingCapacity 斷定試圖插入元素能否成功,因為可能出現另一個執行緒即將插入或移除一個元素的情況。
BlockingQueue<E>
中的 remainingCapacity
public int drainTo(Collection<? super E> c)
BlockingQueue
複製的描述
BlockingQueue<E>
中的 drainTo
c
- 接收傳輸元素的 collection
UnsupportedOperationException
- 如果指定 collection 不支持添加元素
ClassCastException
- 如果此佇列元素的類別不允許將其添加到指定 collection
NullPointerException
- 如果指定 collection 為 null
IllegalArgumentException
- 如果指定 collection 是此佇列,或者此佇列元素的某些屬性不允許將其添加到指定 collectionpublic int drainTo(Collection<? super E> c, int maxElements)
BlockingQueue
複製的描述
BlockingQueue<E>
中的 drainTo
c
- 接收傳輸元素的 collectionmaxElements
- 傳輸元素的最大數量
UnsupportedOperationException
- 如果指定 collection 不支持添加元素
ClassCastException
- 如果此佇列元素的類別不允許將其添加到指定 collection
NullPointerException
- 如果指定 collection 為 null
IllegalArgumentException
- 如果指定 collection 是此佇列,或者此佇列元素的某些屬性不允許將其添加到指定 collectionpublic void push(E e)
BlockingDeque
複製的描述此方法等效於 addFirst
。
BlockingDeque<E>
中的 push
Deque<E>
中的 push
e
- 要推入的元素
IllegalStateException
- 如果此時由於容量限制而無法添加元素
NullPointerException
- 如果指定的元素為 nullpublic E pop()
Deque
複製的描述此方法等效於 Deque.removeFirst()
。
Deque<E>
中的 pop
NoSuchElementException
- 如果此雙端佇列為空public boolean remove(Object o)
此方法等效於 removeFirstOccurrence
。
Collection<E>
中的 remove
BlockingDeque<E>
中的 remove
BlockingQueue<E>
中的 remove
Deque<E>
中的 remove
AbstractCollection<E>
中的 remove
o
- 要從此雙端佇列移除的元素(如果存在)
public int size()
Collection<E>
中的 size
BlockingDeque<E>
中的 size
Deque<E>
中的 size
AbstractCollection<E>
中的 size
public boolean contains(Object o)
Collection<E>
中的 contains
BlockingDeque<E>
中的 contains
BlockingQueue<E>
中的 contains
Deque<E>
中的 contains
AbstractCollection<E>
中的 contains
o
- 檢查是否包含於此雙端佇列的物件
public Object[] toArray()
由於此雙端佇列不維護對返回陣列的任何參考,因而它將是“安全的”。(換句話說,此方法必須分派一個新的陣列)。因此,調用者可以自由地修改返回的陣列。
此方法充當了基於陣列的 API 與基於 collection 的 API 之間的橋樑。
Collection<E>
中的 toArray
AbstractCollection<E>
中的 toArray
public <T> T[] toArray(T[] a)
如果指定的陣列能容納此雙端佇列,並且有剩餘的空間(即陣列的元素比雙端佇列多),那麼將陣列中緊接雙端佇列尾部的元素設置為 null。
像 toArray()
方法一樣,此方法充當基於陣列 的 API 與基於 collection 的 API 之間的橋樑。更進一步說,此方法允許對輸出陣列的運行時型別進行精確控制,在某些情況下,還可以用來節省分派開銷。
假定 x 是只包含字元串的一個已知雙端佇列。以下程式碼用來將該雙端佇列轉儲到一個新分派的 String 陣列:
String[] y = x.toArray(new String[0]);注意,toArray(new Object[0]) 和 toArray() 在功能上是相同的。
Collection<E>
中的 toArray
AbstractCollection<E>
中的 toArray
a
- 要用來存儲雙端佇列元素的陣列(如果該陣列足夠大);否則,將為此分派一個具有相同運行時型別的新陣列
ArrayStoreException
- 如果指定陣列的運行時型別不是此雙端佇列每個元素的運行時型別的父級類別型
NullPointerException
- 如果指定的陣列為 nullpublic String toString()
AbstractCollection
複製的描述String.valueOf(Object)
可以將元素轉換成字元串。
AbstractCollection<E>
中的 toString
public void clear()
Collection<E>
中的 clear
AbstractQueue<E>
中的 clear
public Iterator<E> iterator()
ConcurrentModificationException
的“弱一致”迭代器,能確保遍歷迭代器建構後存在的所有元素,並可以(但並不保證)反映建構後的任何修改。
Iterable<E>
中的 iterator
Collection<E>
中的 iterator
BlockingDeque<E>
中的 iterator
Deque<E>
中的 iterator
AbstractCollection<E>
中的 iterator
public Iterator<E> descendingIterator()
ConcurrentModificationException
的“弱一致”迭代器,能確保遍歷迭代器建構後存在的所有元素,並可以(但並不保證)反映建構後的任何修改。
Deque<E>
中的 descendingIterator
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。