でjava.util.PriorityQueue我々はメソッドを持っているadd(E e)
とoffer(E e)
。どちらの方法も次のように文書化されています。
指定された要素をこの優先度キューに挿入します。
これら2つの方法の違いは何ですか?
でjava.util.PriorityQueue我々はメソッドを持っているadd(E e)
とoffer(E e)
。どちらの方法も次のように文書化されています。
指定された要素をこの優先度キューに挿入します。
これら2つの方法の違いは何ですか?
回答:
違いを確認するには、PriorityQueue APIのjavadocsに従う必要があります。このjavadocsには、Queue
インターフェースのそれぞれのメソッドを参照する「Specified By」セクションがあります。
容量制限に違反せずにすぐに指定可能な要素をこのキューに挿入します。成功するとtrueを 返し、現在使用可能なスペースがない場合はIllegalStateExceptionをスローします ...
戻り値:true
(Collection.add(E)で指定されたとおり)
スロー:IllegalStateException
-容量制限のために、この時点で要素を追加できない場合...
容量制限に違反せずにすぐに指定できる場合は、指定された要素をこのキューに挿入します。容量制限キューを使用する場合は、この方法では、唯一の例外をスローする要素を挿入するために失敗することができ、一般的に(E)を添加することが好ましい ...
戻り値:true
要素は他に、このキューに追加された場合false
...
宣言されたインターフェースで実装する必要があるため、両方のメソッドが存在します。
PriorityQueueは無制限であるため(javadocs:「優先順位ヒープに基づく無制限の優先キュー...」のように)、上記のAPIデザイナーの設定は適用されません。つまり、特定の使用状況でのニーズにより適した方法を選択することは、プログラマの裁量に任されています。