2016-05-30 8 views
0

私は現在、DeitelのJava How to programの本を読んでいますが、文句の一部は混乱しているようです。私は誰かがこれを説明することができて、それが誤解を招くように思われるのだろうかと思っています。優先度キューの中で最も優先度の高い要素に関して、Deitelの言葉に混乱しています

要素をPriorityQueueに追加する場合、要素はPriorityQueueから削除された最初の要素になるように優先度の高い要素(つまり、最大値)が優先度順に挿入されます。

私を混乱させる部分は、最も優先度の高い要素(最大値)が削除されるということです。そのステートメントに基づいて、PriorityQueueに9.8,5.4、および3.2を追加すると、挿入した順番に関係なく、その順序でPriorityQueueを削除/ポーリングすると予想されます。

ただし、私のコード例では、その逆に気付きました。要素が削除された順序は、最初に最小量であった。 javadocsを読むと、「このキューの先頭は、指定された順序についての最小の要素です」というコードが表示されています。これは、コード例で作業していたことと一致しています。

これは、この本が間違っていることを意味するのでしょうか、またはこの概念を説明するために本が使用している文言を把握していませんか?

+0

彼は間違っているとJavadocのが正しいです。しかし、順序を逆転させる 'Comparator'を定義できます。 – EJP

答えて

0

「最大値」は、不注意な表現です。

優先度キューは、(カスタムコンパレータを受け入れるような)任意の順序付けスキームに従って要素を返すことができますが、デフォルトでは「自然順序」に従って要素を返します。 Javaでは、より小さい数字が大きい数字の前に来ます。

は、Oracleのドキュメントに(プリミティブごとに、ラッパーを含む)いくつかの主要なクラスのために自然順序付けを見てみることができます:https://docs.oracle.com/javase/tutorial/collections/interfaces/order.html

関連する問題