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

クラスPriorityQueue<E>

java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractQueue<E>
java.util.PriorityQueue<E>
型パラメータ:
E - このキューに保持されている要素の型
すべての実装されたインタフェース:
Serializable, Iterable<E>, Collection<E>, Queue<E>

public class PriorityQueue<E> extends AbstractQueue<E> implements Serializable
優先度ヒープに基づく、制限なしの優先度キューです。 優先度キューの要素は、その自然順序付けに従って、またはキュー構築時に提供されるComparatorで順序付けされます(使用されるコンストラクタに依存)。 優先度キューでは、null要素は許可されません。 自然順序付けに基づく優先度キューでは、比較不可能なオブジェクトの挿入も許可されません(実行するとClassCastExceptionがスローされることがある)。

このキューの先頭は、指定された順序付けの最小要素です。 複数の要素が最小の値に結び付けられている場合、先頭はこれらの要素の1つになります。結付きの解除は任意です。 キューの取得オペレーションpollremovepeek、およびelementは、キューの先頭の要素にアクセスします。

優先度キューには制限はありませんが、要素をキューに格納するのに使用する配列サイズを制御する内部容量は存在します。 どのような場合でも、これはキューのサイズと常に同じ大きさです。 要素は優先度キューに追加されるため、容量は自動的に大きくなります。 拡大ポリシーの詳細は、指定されません。

このクラスとそのイテレータは、CollectionおよびIteratorインタフェースのオプション・メソッドすべてを実装します。 メソッドiterator()で提供されているイテレータとメソッドspliterator()で提供されているスプリッタは、特定の順序で優先度キューの要素をトラバースすることは保証されません。 要素をトラバースする順序を指定する必要がある場合は、Arrays.sort(pq.toArray())の使用を考慮してください。

この実装はsynchronizedされません。 いずれかのスレッドがキューを変更する場合は、複数のスレッドがPriorityQueueインスタンスに並行してアクセスしてはいけません。 代わりに、スレッドセーフなPriorityBlockingQueueクラスを使用してください。

実装にあたってのノート:この実装は、キューへの登録/登録解除メソッド(offerpollremove()、およびadd)ではO(log(n))時間を、remove(Object)およびcontains(Object)メソッドでは線形時間を、取得メソッド(peekelement、およびsize)では一定時間を、それぞれ提供します。

このクラスは、Java Collections Frameworkのメンバーです。

導入されたバージョン:
1.5
関連項目: