3

優先キューを使用しようとしていますが、要素が「自然な順序」で追加されると想定しています..

要素を印刷すると、ソートされた順序ではありません..結果が1,2,3,4になると思います

package scratch;
import java.util.*;

public class test {
    public static void main(String[] args) {
        PriorityQueue<String> pq = new PriorityQueue<String>();
        pq.add("2");
        pq.add("4");
        System.out.println(pq.peek()+" ");
        pq.offer("1");
        pq.add("3");
        System.out.println(pq);
        /*System.out.println(pq.poll() + " ");
        System.out.println(pq);*/
    }

}

出力:

2 [1, 3, 2, 4]

4

3 に答える 3

4

の文字列表現は、そのPriorityQueue中の要素の順序については何も反映せず、キューの反復順序のみに基づいていますiterator()(これはtoString()で定義されている方法AbstractCollectionであり、PriorityQueueこの実装も使用します)。リンクされたドキュメントから:

イテレータは特定の順序で要素を返すわけではありません。

于 2013-09-04T16:25:23.873 に答える