4

PriorityQueueを実装QueueしていますがPriorityQueue、FIFO データ構造は のようなものQueueですか?

4

4 に答える 4

5

いいえそうではありません。Javadocによる

優先キューの要素は、使用されるコンストラクターに応じて、自然な順序に従って、またはキューの構築時に提供されるコンパレーターによって順序付けられます。

このキューの先頭は、指定された順序に関して最小の要素です

于 2012-10-02T14:42:28.477 に答える
5

キューインターフェイスから:

キューは通常、FIFO (先入れ先出し) 方式で要素を並べ替えますが、必ずしもそうとは限りません。例外の中には、提供されたコンパレーターまたは要素の自然な順序付けに従って要素を順序付けする優先キューがあります。

したがって、PriorityQueue は例外であり、コンパレータがその順序でソートする場合にのみ FIFO キューになります。

于 2012-10-02T14:43:04.683 に答える
4

PriorityQueue は FIFO / LIFO を気にしません。優先度を処理します。同じ優先度を持つ複数のオブジェクトの場合 - FIFO LIFO の動作を当てにすることはできません。

于 2012-10-02T14:44:01.867 に答える
2

プライオリティ キューは、要素を一貫した内部順序で保持するデータ構造です。Java 実装では、この順序は構築時に指定されます。キューの先頭と他の要素の順序は、指定した順序基準によって決まります。

たとえば、学生を含む PriorityQueue があり、設定した順序が年齢の昇順であるとします。キューの先頭には最年少の学生が含まれ、末尾には最年長の学生が含まれます。PriorityQueue に追加すると、学生は年齢に応じて正しい位置に挿入されます。指定した順序であるため、挿入の順序は関係ありません。

于 2012-10-02T14:49:16.350 に答える