执行此代码时:
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的原因吗?
答案 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()).