PriorityQueue民意调查

时间:2012-04-11 09:57:20

标签: java data-structures priority-queue

看起来PriorityQueue是一个LIFO结构(如果其中的所有元素具有相同的优先级),我是对的吗?

 public E poll() {
    if (size == 0)
        return null;
    modCount++;

    E result = (E) queue[1];
    queue[1] = queue[size];
    queue[size--] = null;  // Drop extra ref to prevent memory leak
    if (size > 1)
        fixDown(1);

    return result;
}

2 个答案:

答案 0 :(得分:1)

Javadoc中关于“关系被任意破坏”的陈述意味着你的问题的答案是“不”。

答案 1 :(得分:0)

来自文档:

  

基于优先级堆的无界优先级队列。优先级队列的元素根据其自然顺序排序,或者由队列构造时提供的比较器排序,具体取决于使用的构造函数。优先级队列不允许null元素。依赖于自然排序的优先级队列也不允许插入不可比较的对象(这样做可能会导致ClassCastException)。

     

此队列的头部是指定排序的最小元素。如果多个元素被绑定为最小值,则头部是这些元素之一 - 关系被任意打破。队列检索操作轮询,删除,查看和元素访问队列头部的元素。

http://docs.oracle.com/javase/6/docs/api/java/util/PriorityQueue.html

基本上,总有一个“优先级”,默认情况下,它是元素的自然顺序。