モジュール java.base
パッケージ java.util

インタフェースQueue<E>

型パラメータ:
E - このキューに保持されている要素の型
すべてのスーパー・インタフェース:
Collection<E>, Iterable<E>
既知のすべてのサブインタフェース:
BlockingDeque<E>, BlockingQueue<E>, Deque<E>, TransferQueue<E>
既知のすべての実装クラス:
AbstractQueue, ArrayBlockingQueue, ArrayDeque, ConcurrentLinkedDeque, ConcurrentLinkedQueue, DelayQueue, LinkedBlockingDeque, LinkedBlockingQueue, LinkedList, LinkedTransferQueue, PriorityBlockingQueue, PriorityQueue, SynchronousQueue

public interface Queue<E> extends Collection<E>
処理の前に要素を保持するために設計されたコレクション。 基本的なCollection操作に加えて、キューは追加の挿入、抽出および検査操作を提供します。 これらのメソッドにはそれぞれ、2つの形式があります。1つは操作が失敗したときに例外をスローし、もう1つは特殊な値(操作に応じてnullまたはfalseのいずれか)を返します。 後者の形式の挿入操作は、容量の制限されたQueue実装で使用するために設計されています。ほとんどの実装で挿入操作は失敗できません。
Queueメソッドのサマリー
例外のスロー 特殊な値を返す
挿入 add(e) offer(e)
削除 remove() poll()
調査 element() peek()

必ずしもその必要はありませんが、通常、キューはFIFO (先入れ先出し)で要素の順序付けを行います。 優先度キューは例外で、指定されたコンパレータ(要素の自然順序付け)、およびLIFOキュー(またはスタック)に従って要素の順序付けを行います。LIFOキューでは、LIFO (後入れ先出し)で要素が順序付けされます。 使用される順序付けにかかわらず、キューの先頭remove()またはpoll()呼出しによって削除される要素です。 FIFOキューでは、すべての新しい要素はキューの末尾に挿入されます。 ほかの種類のキューでは、使用される配置ルールが異なる場合があります。 すべてのQueue実装は、順序付けプロパティを指定する必要があります。

offerメソッドは、可能であれば要素を挿入し、可能でなければfalseを返します。 これが、要素の挿入に失敗したときに非チェック例外をスローするだけになる場合があるCollection.addメソッドと異なる点です。 たとえば、固定容量(または「バウンド」)キューが原因で発生する場合のように、offerメソッドは、失敗が例外的ではなく通常のことである場合に使用する目的で設計されています。

remove()およびpoll()メソッドは、キューの先頭を削除して返します。 正確にどの要素をキューから削除するかは、キューの順序付けポリシーの役割であり、実装により異なります。 remove()およびpoll()メソッドは、キューが空のときの動作だけが異なります。remove()メソッドは例外をスローし、poll()メソッドはnullを返します。

element()およびpeek()メソッドは、キューの先頭を返しますが、削除は行いません。

Queueインタフェースは、並行プログラミングでは一般的なブロッキング・キュー・メソッドを定義しません。 これらのメソッドは、このインタフェースを拡張するBlockingQueueインタフェース内で定義され、要素が出現するか空きが生じるまで待機します。

LinkedListなどの一部の実装はnull要素の挿入を許可するのに対し、通常、Queue実装はnullの挿入を許可しません。 nullはキューに要素が含まれないことを示すpollメソッドの特殊な戻り値としても使用されるため、Queuenullを挿入する操作は、それを許可する実装であっても行うべきではありません。

通常、Queue実装は要素ベースのメソッドequalsおよびhashCodeを定義せずに、Objectクラスからアイデンティティ・ベースのメソッドを継承します。これは、保持する要素が同じでも順序付けのプロパティが異なるキューの場合、要素ベースの等価性が常に十分に定義されているとは言えないためです。

このインタフェースは、Java Collections Frameworkのメンバーです。

導入されたバージョン:
1.5