インタフェース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
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のメンバーです。
- 導入されたバージョン:
- 1.5
-
メソッドのサマリー
修飾子と型メソッド説明boolean容量制限に違反することなく、指定された要素をこのキューにすぐに挿入できる場合はそうします。成功した場合はtrueを返し、その時点で使用可能な空き領域が存在しない場合はIllegalStateExceptionをスローします。element()キューの先頭を取得しますが、削除しません。boolean容量制限に違反せずにすぐ実行できる場合は、指定された要素をこのキューに挿入します。peek()キューの先頭を取得しますが、削除しません。キューが空の場合はnullを返します。poll()キューの先頭を取得および削除します。キューが空の場合はnullを返します。remove()キューの先頭を取得および削除します。インタフェースjava.util.Collectionで宣言されたメソッド
addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, parallelStream, remove, removeAll, removeIf, retainAll, size, spliterator, stream, toArray, toArray, toArray
-
メソッドの詳細
-
add
boolean add(E e) 容量制限に違反することなく、指定された要素をこのキューにすぐに挿入できる場合はそうします。成功した場合はtrueを返し、その時点で使用可能な空き領域が存在しない場合はIllegalStateExceptionをスローします。- 定義:
add、インタフェースCollection<E>- パラメータ:
e- 追加する要素- 戻り値:
true(Collection.add(E)で指定されているとおり)- スロー:
IllegalStateException- 容量制限のために、この時点で要素を追加できない場合ClassCastException- 指定された要素のクラスが原因で、このキューにその要素を追加できない場合NullPointerException- 指定された要素がnullで、このキューがnull要素を許可しない場合IllegalArgumentException- この要素のあるプロパティが原因で、このキューにその要素を追加できない場合
-
offer
boolean offer(E e) 容量制限に違反せずにすぐ実行できる場合は、指定された要素をこのキューに挿入します。 容量制限のあるキューを使用する場合、通常は、要素の挿入に失敗した場合に例外をスローするだけのadd(E)よりもこのメソッドを使用することをお薦めします。- パラメータ:
e- 追加する要素- 戻り値:
- このキューに要素が追加された場合は
true、それ以外の場合はfalse - スロー:
ClassCastException- 指定された要素のクラスが原因で、このキューにその要素を追加できない場合NullPointerException- 指定された要素がnullで、このキューがnull要素を許可しない場合IllegalArgumentException- この要素のあるプロパティが原因で、このキューにその要素を追加できない場合
-
remove
E remove()キューの先頭を取得および削除します。 このメソッドは、キューが空の場合に例外をスローする点のみがpoll()メソッドと異なります。- 戻り値:
- キューの先頭
- スロー:
NoSuchElementException- このキューが空の場合
-
poll
-
element
E element()キューの先頭を取得しますが、削除しません。 このメソッドは、キューが空の場合に例外をスローする点のみがpeekメソッドと異なります。- 戻り値:
- キューの先頭
- スロー:
NoSuchElementException- このキューが空の場合
-
peek
-