E
- このコレクション内に保持される要素の型public interface Queue<E> extends Collection<E>
Collection
オペレーションだけでなく、キューは追加の挿入、抽出、および検査オペレーションを提供します。これらのメソッドにはそれぞれ、2 つの形式があります。1 つはオペレーション失敗時に例外をスローし、もう 1 つは特殊な値 (オペレーションに応じて null または false) を返します。後者の形式の挿入オペレーションは、容量の制限された 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 メソッドの特殊な戻り値としても使用されるため、Queue に null を挿入する操作は、それを許可する実装であっても行うべきではありません。
通常、Queue 実装は要素ベースのメソッド equals および hashCode を定義せずに、Object クラスからアイデンティティーベースのメソッドを継承します。これは、保持する要素が同じでも順序付けのプロパティーが異なるキューの場合、要素ベースの等価性が常に十分に定義されているとは言えないためです。
このインタフェースは、Java Collections Framework のメンバーです。
Collection
, LinkedList
, PriorityQueue
, LinkedBlockingQueue
, BlockingQueue
, ArrayBlockingQueue
, LinkedBlockingQueue
, PriorityBlockingQueue
修飾子と型 | メソッドと説明 |
---|---|
boolean |
add(E e)
容量制限に違反することなく、指定された要素をこのキューにすぐに挿入できる場合はそうします。成功した場合は true を返し、その時点で使用可能な空き領域が存在しない場合は IllegalStateException をスローします。
|
E |
element()
キューの先頭を取得しますが、削除しません。
|
boolean |
offer(E e)
容量制限に違反せずにすぐ実行できる場合は、指定された要素をこのキューに挿入します。
|
E |
peek()
キューの先頭を取得しますが、削除しません。キューが空の場合は null を返します。
|
E |
poll()
キューの先頭を取得および削除します。キューが空の場合は null を返します。
|
E |
remove()
キューの先頭を取得および削除します。
|
boolean add(E e)
add
、インタフェース: Collection<E>
e
- 追加する要素Collection.add(E)
で指定されているとおり)IllegalStateException
- 容量制限のために、この時点で要素を追加できない場合ClassCastException
- 指定された要素のクラスが原因で、このキューにその要素を追加できない場合NullPointerException
- 指定された要素が null で、このキューが null 要素を許可しない場合IllegalArgumentException
- この要素のあるプロパティーが原因で、このキューにその要素を追加できない場合boolean offer(E e)
add(E)
よりもこのメソッドを使用することをお勧めします。e
- 追加する要素ClassCastException
- 指定された要素のクラスが原因で、このキューにその要素を追加できない場合NullPointerException
- 指定された要素が null で、このキューが null 要素を許可しない場合IllegalArgumentException
- この要素のあるプロパティーが原因で、このキューにその要素を追加できない場合E remove()
poll
メソッドと異なります。NoSuchElementException
- このキューが空の場合E poll()
E element()
peek
メソッドと異なります。NoSuchElementException
- このキューが空の場合E peek()
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.