- 型パラメータ:
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
実装で使用するために設計されています。ほとんどの実装で挿入操作は失敗できません。
例外のスロー | 特殊な値を返す | |
---|---|---|
挿入 | 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
add(E e)
容量制限に違反することなく、指定された要素をこのキューにすぐに挿入できる場合はそうします。成功した場合はtrue
を返し、その時点で使用可能な空き領域が存在しない場合はIllegalStateException
をスローします。E
element()
キューの先頭を取得しますが、削除しません。boolean
offer(E e)
容量制限に違反せずにすぐ実行できる場合は、指定された要素をこのキューに挿入します。E
peek()
キューの先頭を取得しますが、削除しません。キューが空の場合はnull
を返します。E
poll()
キューの先頭を取得および削除します。キューが空の場合はnull
を返します。E
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
E poll()キューの先頭を取得および削除します。キューが空の場合はnull
を返します。- 戻り値:
- キューの先頭。キューが空の場合は
null
-
element
E element()キューの先頭を取得しますが、削除しません。 このメソッドは、キューが空の場合に例外をスローする点のみがpeek
メソッドと異なります。- 戻り値:
- キューの先頭
- 例外:
NoSuchElementException
- このキューが空の場合
-
peek
E peek()キューの先頭を取得しますが、削除しません。キューが空の場合はnull
を返します。- 戻り値:
- キューの先頭。キューが空の場合は
null
-