Java:優先度キュー

私はこのように行くJavaプログラムを持っている

パブリッククラスPriorityQueueExample {

public static void main(String[] args) {
    PriorityQueue pq = new PriorityQueue();
    pq.add(10);
    pq.add(1);
    pq.add(9);
    pq.add(2);
    pq.add(8);
    pq.add(3);
    pq.add(7);
    pq.add(4);
    pq.add(6);
    pq.add(5);
System.out.println(pq);

}

}

私の質問はなぜ優先順位のキューがそれらを並べ替えていないのですか? java仕様に準拠して、それは比較可能なものを実装し、ソート順(自然順序付け)

プログラムの私の出力は以下の通りです:[1,2,3,4,5,9,7,10,6,8]

7

2 答え

ソートされていますが、内部的にヒープに要素が格納されています。 peek()poll()、または remove()を呼び出すと、正しい順序が得られます(キューにアクセスする方法)。

7
追加された

優先度キューに挿入するだけでは、ソートされた順序で要素を格納しないため、要素のリストをソートするだけでは不十分です。部分的にソートされたヒープ命令に格納されます。ソートするには、ループ内の要素を削除する必要があります。

while (pq.size() > 0)
    System.out.println(pq.remove());
7
追加された