PriorityQueue class 的标准行为是什么?
What is the standard behavior of the PriorityQueue class?
所以我正在尝试构建我的第一个 prim 算法,为此我根据权重对边进行排序。
所以我想如果我使用优先级队列会有帮助,为此我需要让我的边缘实现 Comparable<> 接口,所以我做到了但我不知道优先级队列认为是什么最高优先级,会不会
是最重的还是最轻的边缘?而且,优先级队列会两次添加相同的对象,还是会表现为一个集合?
这是我的代码:
Public class Edge implements Comparable<Edge> {
int weight;
public int compareTo(Edge e) {
return e.getWeight() - this.weight;
}
}
我希望获得最轻的边缘作为最高优先级。
值得注意的是,这是我第一次实现优先队列和可比
优先级队列使用所谓的对象自然排序。 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
}
所以我正在尝试构建我的第一个 prim 算法,为此我根据权重对边进行排序。
所以我想如果我使用优先级队列会有帮助,为此我需要让我的边缘实现 Comparable<> 接口,所以我做到了但我不知道优先级队列认为是什么最高优先级,会不会 是最重的还是最轻的边缘?而且,优先级队列会两次添加相同的对象,还是会表现为一个集合?
这是我的代码:
Public class Edge implements Comparable<Edge> {
int weight;
public int compareTo(Edge e) {
return e.getWeight() - this.weight;
}
}
我希望获得最轻的边缘作为最高优先级。 值得注意的是,这是我第一次实现优先队列和可比
优先级队列使用所谓的对象自然排序。 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
}