2

このコードの実行中:

Queue q=new PriorityQueue();
q.add(1);
q.add(1);
q.add(1);
q.add(2);
System.out.println(q);
System.out.println(q.remove(1));
System.out.println(q);

出力は次のとおりです。

[1, 1, 1, 2]
true
[1, 2, 1]

誰かが出力の値 1 をシフトする理由を説明してもらえますか?

4

1 に答える 1

3

これはSystem.out.println(q); PriorityQueue.iterator によって返された要素を出力し、PriorityQueue API は言う

The Iterator provided in method iterator() is not guaranteed to traverse the elements of the priority queue in any particular order. If you need ordered traversal, consider using Arrays.sort(pq.toArray()). 
于 2013-02-13T16:47:09.707 に答える