JavaTM Platform
Standard Ed. 6

java.util
インタフェース Queue<E>

型パラメータ:
E - コレクション内に存在する要素の型
すべてのスーパーインタフェース:
Collection<E>, Iterable<E>
既知のサブインタフェースの一覧:
BlockingDeque<E>, BlockingQueue<E>, Deque<E>
既知の実装クラスの一覧:
AbstractQueue, ArrayBlockingQueue, ArrayDeque, ConcurrentLinkedQueue, DelayQueue, LinkedBlockingDeque, LinkedBlockingQueue, LinkedList, 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 メソッドの特殊な戻り値としても使用されるため、Queuenull を挿入する操作は、それを許可する実装であっても行うべきではありません。  

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

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

導入されたバージョン:
1.5
関連項目:
Collection, LinkedList, PriorityQueue, LinkedBlockingQueue, BlockingQueue, ArrayBlockingQueue, LinkedBlockingQueue, PriorityBlockingQueue

メソッドの概要
 boolean add(E e)
          指定された要素を、このキューに容量制限に違反することなしにすぐに挿入できる場合には、そうします。
 E element()
          キューの先頭を取得しますが、削除しません。
 boolean offer(E e)
          容量制限に違反せずにすぐ実行できる場合は、指定された要素をこのキューに挿入します。
 E peek()
          キューの先頭を取得しますが、削除しません。
 E poll()
          キューの先頭を取得および削除します。
 E remove()
          キューの先頭を取得および削除します。
 
インタフェース java.util.Collection から継承されたメソッド
addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray, toArray
 

メソッドの詳細

add

boolean add(E e)
指定された要素を、このキューに容量制限に違反することなしにすぐに挿入できる場合には、そうします。成功した場合は true を返し、使用可能な空き領域がその時点で存在しない場合は IllegalStateException をスローします。

定義:
インタフェース Collection<E> 内の add
パラメータ:
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

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。