E
- このコレクション内に保持される要素の型public class PriorityQueue<E> extends AbstractQueue<E> implements Serializable
Comparator
で順序付けされます(使用されるコンストラクタに依存)。優先度キューでは、null
要素は許可されません。自然順序付けに基づく優先度キューでは、比較不可能なオブジェクトの挿入も許可されません(実行するとClassCastException
がスローされることがある)。
このキューの先頭は、指定された順序付けの最小要素です。複数の要素が最小の値に結び付けられている場合、先頭はこれらの要素の1つになります。結付きの解除は任意です。キューの取得オペレーションpoll
、remove
、peek
、およびelement
は、キューの先頭の要素にアクセスします。
優先度キューには制限はありませんが、要素をキューに格納するのに使用する配列サイズを制御する内部容量は存在します。どのような場合でも、これはキューのサイズと常に同じ大きさです。要素は優先度キューに追加されるため、容量は自動的に大きくなります。拡大ポリシーの詳細は、指定されません。
このクラスとそのイテレータは、Collection
およびIterator
インタフェースの任意メソッドすべてを実装します。iterator()
メソッド内で提供されるIteratorでは、特定の順序で優先度キューの要素をトラバースすることは保証されません。要素をトラバースする順序を指定する必要がある場合は、Arrays.sort(pq.toArray())
の使用を考慮してください。
この実装はsynchronizedされません。いずれかのスレッドがキューを変更する場合は、複数のスレッドがPriorityQueue
インスタンスに並行してアクセスしてはいけません。代わりに、スレッドセーフなPriorityBlockingQueue
クラスを使用してください。
実装にあたっての注意:この実装は、キューへの登録/登録解除メソッド(offer
、poll
、remove()
、およびadd
)ではO(log(n))時間を、remove(Object)
およびcontains(Object)
メソッドでは線形時間を、取得メソッド(peek
、element
、およびsize
)では一定時間を、それぞれ提供します。
このクラスは、Java Collections Frameworkのメンバーです。
コンストラクタと説明 |
---|
PriorityQueue()
自然順序付けに従って要素を順序付けする、デフォルトの初期容量(11)を持つ
PriorityQueue を作成します。 |
PriorityQueue(Collection<? extends E> c)
指定されたコレクション内の要素を含む
PriorityQueue を作成します。 |
PriorityQueue(Comparator<? super E> comparator)
デフォルトの初期容量を持ち、指定されたコンパレータに従って要素が順序付けられる
PriorityQueue を作成します。 |
PriorityQueue(int initialCapacity)
自然順序付けに従って要素を順序付けする、指定された初期容量を持つ
PriorityQueue を作成します。 |
PriorityQueue(int initialCapacity, Comparator<? super E> comparator)
指定されたコンパレータに従って要素を順序付けする、指定された初期容量を持つ
PriorityQueue を作成します。 |
PriorityQueue(PriorityQueue<? extends E> c)
指定された優先度キュー内の要素を含む
PriorityQueue を作成します。 |
PriorityQueue(SortedSet<? extends E> c)
指定されたソート・セット内の要素を含む
PriorityQueue を作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
boolean |
add(E e)
指定された要素をこの優先度キューに挿入します。
|
void |
clear()
すべての要素をこの優先度キューから削除します。
|
Comparator<? super E> |
comparator()
このキュー内の要素を順序付けするために使うコンパレータを返します。ただし、このキューがその要素の自然順序付けに従ってソートされる場合は
null を返します。 |
boolean |
contains(Object o)
指定された要素がキューに含まれている場合に
true を返します。 |
Iterator<E> |
iterator()
このキュー内の要素のイテレータを返します。
|
boolean |
offer(E e)
指定された要素をこの優先度キューに挿入します。
|
E |
peek()
キューの先頭を取得しますが、削除しません。キューが空の場合は
null を返します。 |
E |
poll()
キューの先頭を取得および削除します。キューが空の場合は
null を返します。 |
boolean |
remove(Object o)
指定された要素の単一のインスタンスがこのキューに存在する場合は、キューから削除します。
|
int |
size()
このコレクション中の要素の数を返します。
|
Spliterator<E> |
spliterator()
このキュー内の要素に対する遅延バインディングおよびフェイルファスト
Spliterator を作成します。 |
Object[] |
toArray()
このキューの要素がすべて含まれている配列を返します。
|
<T> T[] |
toArray(T[] a)
このキュー内のすべての要素を含む配列を返します。返される配列の実行時の型は、指定された配列の型です。
|
addAll, element, remove
containsAll, isEmpty, removeAll, retainAll, toString
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
containsAll, equals, hashCode, isEmpty, parallelStream, removeAll, removeIf, retainAll, stream
public PriorityQueue()
PriorityQueue
を作成します。public PriorityQueue(int initialCapacity)
PriorityQueue
を作成します。initialCapacity
- この優先度キューの初期容量IllegalArgumentException
- initialCapacity
が1より小さい場合public PriorityQueue(Comparator<? super E> comparator)
PriorityQueue
を作成します。comparator
- この優先度キューを順序付けするために使用されるコンパレータ。null
の場合、要素の自然順序付けが使用される。public PriorityQueue(int initialCapacity, Comparator<? super E> comparator)
PriorityQueue
を作成します。initialCapacity
- この優先度キューの初期容量comparator
- この優先度キューを順序付けするために使用されるコンパレータ。null
の場合、要素の自然順序付けが使用される。IllegalArgumentException
- initialCapacity
が1より小さい場合public PriorityQueue(Collection<? extends E> c)
PriorityQueue
を作成します。指定されたコレクションがSortedSet
のインスタンスであるか別のPriorityQueue
である場合、この優先度キューの順序付けは、それと同じ順序付けに従って行われます。それ以外の場合、この優先度キューの順序付けは、その要素の自然順序付けに従って行われます。c
- 要素がこの優先度キューに配置されるコレクションClassCastException
- 指定されたコレクションの要素を優先度キューの順序付けに従って相互比較できない場合NullPointerException
- 指定されたコレクションまたはそのいずれかの要素がnullである場合public PriorityQueue(PriorityQueue<? extends E> c)
PriorityQueue
を作成します。この優先度キューの順序付けは、指定された優先度キューと同じ順序付けに従って行われます。c
- 要素がこの優先度キューに配置される優先度キューClassCastException
- c
の要素をc
の順序付けに従って相互比較できない場合NullPointerException
- 指定された優先度キューまたはそのいずれかの要素がnullである場合public PriorityQueue(SortedSet<? extends E> c)
PriorityQueue
を作成します。この優先度キューの順序付けは、指定されたソート・セットと同じ順序付けに従って行われます。c
- 要素が優先度キューに配置されるソート・セットClassCastException
- 指定されたソート・セットの要素をそのソート・セットの順序付けに従って相互比較できない場合NullPointerException
- 指定されたソート・セット、またはその要素のいずれかがnullの場合public boolean add(E e)
add
、インタフェース: Collection<E>
add
、インタフェース: Queue<E>
add
、クラス: AbstractQueue<E>
e
- 追加する要素true
(Collection.add(E)
で指定されているとおり)ClassCastException
- 指定された要素と、この優先度キュー内に現在存在している要素との比較を、この優先度キューの順序付けに従って行えない場合NullPointerException
- 指定された要素がnullである場合public boolean offer(E e)
offer
、インタフェース: Queue<E>
e
- 追加する要素true
(Queue.offer(E)
で指定されているとおり)ClassCastException
- 指定された要素と、この優先度キュー内に現在存在している要素との比較を、この優先度キューの順序付けに従って行えない場合NullPointerException
- 指定された要素がnullである場合public boolean remove(Object o)
o.equals(e)
に該当する要素e
が1つ以上含まれている場合は、そのような要素を削除します。指定された要素がこのキューに含まれていた場合(つまり、呼出しの結果としてこのキューが変更された場合)にのみtrue
を返します。remove
、インタフェース: Collection<E>
remove
、クラス: AbstractCollection<E>
o
- キューから削除される要素(その要素が存在する場合)true
public boolean contains(Object o)
true
を返します。つまり、このキュー内にo.equals(e)
のような1つ以上の要素e
が含まれている場合、true
を返します。contains
、インタフェース: Collection<E>
contains
、クラス: AbstractCollection<E>
o
- このキューに含まれているかどうかを調べるオブジェクトtrue
public Object[] toArray()
返される配列は、それへの参照がこのキューで保持されない場合に、安全になります。(つまり、このメソッドは新しい配列を割り当てます。)このため、呼出し側は、返された配列を自由に変更できます。
このメソッドは、配列ベースのAPIとコレクションベースのAPIの間の橋渡し役として機能します。
toArray
、インタフェース: Collection<E>
toArray
、クラス: AbstractCollection<E>
public <T> T[] toArray(T[] a)
指定された配列にキューが収まり、さらに余分な領域がある場合(配列にキューより多くの要素がある場合)、配列でコレクションの末尾に続く要素はnull
に設定されます。
toArray()
メソッドと同じように、このメソッドは、配列ベースのAPIとコレクションベースのAPIの間の橋渡し役として機能します。さらに、このメソッドでは出力配列の実行時の型を正確に制御できるため、環境によっては割当ての手間を抑えるために使用できます。
x
が、文字列だけからなるキューであることがわかっていると仮定します。次のコードを使うと、新しく割り当てられたString
の配列にキューをダンプできます。
String[] y = x.toArray(new String[0]);
toArray(new Object[0])
は、機能の点でtoArray()
と同一です。toArray
、インタフェース: Collection<E>
toArray
、クラス: AbstractCollection<E>
T
- コレクションを含む配列の実行時の型a
- 配列が十分な大きさを持つ場合は、キューの要素の格納先の配列。配列のサイズが十分でない場合は、同じ実行時の型で新しい配列が格納用として割り当てられる。ArrayStoreException
- 指定された配列の実行時の型が、このキュー内の各要素の実行時の型のスーパー・タイプでない場合NullPointerException
- 指定された配列がnullである場合public Iterator<E> iterator()
iterator
、インタフェース: Iterable<E>
iterator
、インタフェース: Collection<E>
iterator
、クラス: AbstractCollection<E>
public int size()
Collection
size
、インタフェース: Collection<E>
size
、クラス: AbstractCollection<E>
public void clear()
clear
、インタフェース: Collection<E>
clear
、クラス: AbstractQueue<E>
public Comparator<? super E> comparator()
null
を返します。null
public final Spliterator<E> spliterator()
Spliterator
を作成します。
Spliterator
は、Spliterator.SIZED
、Spliterator.SUBSIZED
およびSpliterator.NONNULL
を報告します。オーバーライドする実装は、追加の特性値の報告をドキュメント化する必要があります。
spliterator
、インタフェース: Iterable<E>
spliterator
、インタフェース: Collection<E>
Spliterator
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.