优先级队列中元素的自然排序

时间:2015-05-06 10:09:46

标签: java scjp

根据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);
}
}

1 个答案:

答案 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方法迭代元素。

这与元素从队列中删除的顺序无关,这与自然顺序有关。