从PriorityQueue中删除具有相同优先级的元素

时间:2013-02-13 16:28:39

标签: java

执行此代码时:

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的原因吗?

1 个答案:

答案 0 :(得分: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()).