JavaのPriorityQueueのaddメソッドとofferメソッドの違いは何ですか?


12

java.util.PriorityQueue我々はメソッドを持っているadd(E e)offer(E e)。どちらの方法も次のように文書化されています。

指定された要素をこの優先度キューに挿入します。

これら2つの方法の違いは何ですか?

回答:


17

違いはそれがあるoffer()返されfalse、それが制限されたサイズに要素を挿入するために失敗した場合、キューのに対し、add()スローされますIllegalStateException

あなたは使うべきoffer()要素を挿入するために、障害が正常であるだろうというとき、およびadd()障害が発生した例外(ニーズが扱われること)になるとき。


4

違いを確認するには、PriorityQueue APIのjavadocsに従う必要があります。このjavadocsには、Queueインターフェースのそれぞれのメソッドを参照する「Specified By」セクションがあります。

  • Queue.add

    容量制限に違反せずにすぐに指定可能な要素をこのキューに挿入します。成功するとtrueを 返し、現在使用可能なスペースがない場合はIllegalStateExceptionスローします ...
    戻り値:trueCollection.add(E)で指定されたとおり)
    スロー:IllegalStateException-容量制限のために、この時点で要素を追加できない場合...

  • Queue.offer

    容量制限に違反せずにすぐに指定できる場合は、指定された要素をこのキューに挿入します。容量制限キューを使用する場合は、この方法では、唯一の例外をスローする要素を挿入するために失敗することができ、一般的に(E)を添加することが好ましい ...
    戻り値:true要素は他に、このキューに追加された場合false...

宣言されたインターフェースで実装する必要があるため、両方のメソッドが存在します。

PriorityQueueは無制限であるため(javadocs:「優先順位ヒープに基づく無制限の優先キュー...」のように)、上記のAPIデザイナーの設定は適用されません。つまり、特定の使用状況でのニーズにより適した方法を選択することは、プログラマの裁量に任されています。


2
あなたが行って、ドキュメントを見ました。弱い。; P
yannis 2013年

1
あなたが表示されます@YannisRizos次のことは、私はされるだろうコルシュラプネルのような文句 :) ああ、あなたは30秒の答えと競合することはできません。あなたも、適切なリンク何とか何とかを見つけることができる前に質問が5つの答えを得るだろう
ブヨ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.