根据docs,优先级队列元素按照自然顺序排序,然后以不同的方式打印
public class PQ2 {
public static void main(String[] args) {
PriorityQueue<Integer> pq = new PriorityQueue<Integer>();
pq.add(2);
pq.add(4);
System.out.println(pq);
pq.offer(1);
System.out.println(pq);
pq.add(3);
System.out.println(pq);
}
}
答案 0 :(得分:1)
元素的打印顺序由PriorityQueue
类的迭代器确定,该迭代器未被排序:
/**
* Returns an iterator over the elements in this queue. The iterator
* does not return the elements in any particular order.
*
* @return an iterator over the elements in this queue
*/
public Iterator<E> iterator() {
return new Itr();
}
PriorityQueue
使用toString()
AbstractCollection
实现,iterator()
使用dataset
方法迭代元素。
这与元素从队列中删除的顺序无关,这与自然顺序有关。