优先队列中元素的自然顺序



根据文档,优先级队列元素是根据自然顺序排序的,然后它如何以不同的方式打印

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()方法在元素上迭代。

这与元素将从队列中删除的顺序无关,这是根据自然顺序的。

最新更新