import java.util.*;
class TestPQ{
public static void main(String[] args)  {
PriorityQueue<String> pq = new PriorityQueue<String>();
pq.add("2");
pq.add("4");
System.out.print(pq.peek() + " ");
pq.offer("1");
pq.add("3");
pq.remove("1");
System.out.print(pq.poll() + " ");
if(pq.remove("2")) System.out.print(pq.poll() + " ");
System.out.print(pq.poll() + " " + pq.peek());
}
}这是一道SCJP的练习题,7 - 9
给的答案是 2 2 3 4
自己run的结果也是 2 2 3 4
但是不知道为何不是 2 2 4 3
请高手赐教。非常感谢。

解决方案 »

  1.   

    PriorityQueue(int initialCapacity, Comparator<? super E> comparator) 使用指定的初始容量创建一个 PriorityQueue,并根据指定的比较器来排序其元素。直接用不带参数的构造方法,那么就是默认的顺序了。同学你可以看看API的嘛,另外数据结构的优先队列,实现也不是很难。
      

  2.   

    这个队列称为优先队列,往里面放的对象谁的优先级别高谁可以插队被先取出来。优先级根据对象的 Comparable 的比值,或者 Comparator 的比值来确定