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 回答