java.util接口 Queue<E>
- 類型參數:
- E- 集合中所保存元素的類型。
- 所有超級接口:
- Collection<E>,Iterable<E>
- 所有已知子接口:
- BlockingQueue<E>
- 所有已知實現類:
- AbstractQueue,ArrayBlockingQueue,ConcurrentLinkedQueue,DelayQueue,LinkedBlockingQueue,LinkedList,PriorityBlockingQueue,PriorityQueue,SynchronousQueue
- public interfaceQueue<E>
- extendsCollection<E>
在處理元素前用於保存元素的集合。除了基本的Collection操作外,佇列還提供其他的插入、提取和檢查操作。
佇列通常(但並非一定)以 FIFO(先進先出)的方式排序各個元素。不過優先權佇列和 LIFO 佇列(或堆疊)例外,前者根據提供的比較器或元素的自然順序對元素進行排序,後者按 LIFO(後進先出)的方式對元素進行排序。無論使用哪種排序方式,佇列的頭都是調用remove()或poll()所移除的元素。在 FIFO 佇列中,所有的新元素都插入佇列的末尾。其他種類的佇列可能使用不同的元素放置規則。每個Queue實現必須指定其順序屬性。
如果可能,offer方法可插入一個元素,否則返回false。這與Collection.add方法不同,該方法只能通過拋出未經檢查的異常使添加元素失敗。offer方法設計用於正常的失敗情況,而不是出現異常的情況,例如在容量固定(有界)的佇列中。
remove()和poll()方法可移除和返回佇列的頭。到底從佇列中移除哪個元素是佇列排序策略的功能,而該策略在各種實現中是不同的。remove()和poll()方法僅在佇列為空時其行為有所不同:remove()方法拋出一個異常,而poll()方法則返回null。
element()和peek()返回,但不移除,佇列的頭。
Queue接口並未定義阻塞佇列的方法,而這在並發編程中是很常見的。BlockingQueue接口定義了那些等待元素出現或等待佇列中有可用空間的方法,這些方法擴展了此接口。
Queue實現通常不允許插入null元素,儘管某些實現(如LinkedList)並不禁止插入null。即使在允許 null 的實現中,也不應該將null插入到Queue中,因為null也用作poll方法的一個特殊返回值,表明佇列不包含元素。
Queue實現通常未定義equals和hashCode方法的基於元素的版本,而是從Object類繼承了基於身份的版本,因為對於具有相同元素但有不同排序屬性的佇列而言,基於元素的相等性並非總是定義良好的。
此接口是Java Collections Framework的成員。
- 從以下版本開始:
- 1.5
- 另請參見:
- Collection,LinkedList,PriorityQueue,LinkedBlockingQueue,BlockingQueue,ArrayBlockingQueue,LinkedBlockingQueue,PriorityBlockingQueue
方法詳細信息 |
---|
offer
booleanoffer(E o)- 如果可能,將指定的元素插入此佇列。使用可能有插入限制(例如容量限定)的佇列時,offer方法通常要優於Collection.add(E)方法,因為後者只能通過拋出異常使插入元素失敗。
- 參數:
- o- 要插入的元素。
- 返回:
- 如果可以向此佇列添加元素,則返回true;否則返回false。
poll
Epoll()- 檢索並移除此佇列的頭,如果此佇列為空,則返回null。
- 返回:
- 佇列的頭,如果此佇列為空,則返回null。
remove
Eremove()- 檢索並移除此佇列的頭。此方法與poll方法的不同在於,如果此佇列為空,它會拋出一個異常。
- 返回:
- 佇列的頭。
- 拋出:
- NoSuchElementException- 如果此佇列為空。
peek
Epeek()- 檢索,但是不移除此佇列的頭,如果此佇列為空,則返回null。
- 返回:
- 佇列的頭,如果此佇列為空,則返回null。
element
Eelement()- 檢索,但是不移除此佇列的頭。此方法與peek方法的惟一不同是,如果此佇列為空,它會拋出一個異常。
- 返回:
- 佇列的頭。
- 拋出:
- NoSuchElementException- 如果此佇列為空。