PriorityQueue类的标准行为是什么?

时间:2019-10-22 00:18:21

标签: java priority-queue

所以我正在尝试构建我的第一个素数算法,为此,我按照优先级对其权重进行了排序。

因此,我认为如果使用优先级队列会有所帮助,为此,我需要使自己的边缘实现Comparable <>接口,所以我做到了,但我不知道优先级队列认为最高优先级是什么,会吗  是最重还是最轻的边缘?而且,优先级队列将两次添加同一对象,还是将其作为Set?

这是我的代码:

Public class Edge implements Comparable<Edge> {
   int weight;

   public int compareTo(Edge e) {
      return e.getWeight() - this.weight;
   }
}

我希望将最轻的边缘作为最高优先级。 值得注意的是,这是我第一次实现优先级队列并具有可比性

1 个答案:

答案 0 :(得分:0)

优先级队列使用所谓的对象自然排序。 The compareTo() method needs to return a -1, 0 1。优先级最高的对象将始终位于队列的最前面。

我也会更改您的compareTo实现,就像这样运行。

public int compareTo(Edge e) 
{
    if( e.getWeight() > this.weight )
        return 1;
    else if( e.getWeight() == this.weight )
        return 0;
    else //e.getWeight() < this.weight
        return -1
}