所以我正在尝试构建我的第一个素数算法,为此,我按照优先级对其权重进行了排序。
因此,我认为如果使用优先级队列会有所帮助,为此,我需要使自己的边缘实现Comparable <>接口,所以我做到了,但我不知道优先级队列认为最高优先级是什么,会吗 是最重还是最轻的边缘?而且,优先级队列将两次添加同一对象,还是将其作为Set?
这是我的代码:
Public class Edge implements Comparable<Edge> {
int weight;
public int compareTo(Edge e) {
return e.getWeight() - this.weight;
}
}
我希望将最轻的边缘作为最高优先级。 值得注意的是,这是我第一次实现优先级队列并具有可比性
答案 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
}