根据文档,优先级队列元素是根据自然顺序排序的,然后它如何以不同的方式打印
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);
}
}
元素打印的顺序由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()
方法在元素上迭代。
这与元素将从队列中删除的顺序无关,这是根据自然顺序的。