import java.util.PriorityQueue;public class PQ {
   public static void main(String[] args) {
      PriorityQueue<String> pq = new PriorityQueue<String>();
      pq.add("carrot");
      pq.add("apple");
      pq.add("banana");
      String s = pq.poll();  //怎么可能是提取到apple,没可能的
      String r = pq.peek();
      System.out.println(s + r);
   }
}

解决方案 »

  1.   

    Priority 是指优化级的意思!表示越小的会排在越前面
      

  2.   

    apple在中间,取头取尾也轮不到他。
      

  3.   

    最小值有最高优先级,所以apple 在最前面,最先弹出
      

  4.   

    一个基于优先级堆的无界优先级队列。优先级队列的元素按照其自然顺序进行排序,或者根据构造队列时提供的 Comparator 进行排序,具体取决于所使用的构造方法。优先级队列不允许使用 null 元素。依靠自然顺序的优先级队列还不允许插入不可比较的对象(这样做可能导致 ClassCastException)。 
      

  5.   

    我认为这东西在 java.util.PriorityQueue API 文档上已经说得很清楚了!
      

  6.   

    原来按照自然排序,我以为按照放置顺序。
    那poll和 peek什么区别?
      

  7.   

    poll取出首项并删除,peek只取出话说感觉lz似乎从不看源码和api