Java PriorityQueue类的标准行为是什么?

Java PriorityQueue类的标准行为是什么?,java,priority-queue,Java,Priority Queue,因此,我试图构建我的第一个prim算法,为此,我按照优先级trought(它的权重)对边进行排序 所以我想如果我使用优先级队列会很有帮助,为此我需要让我的edge实现可比较的接口,所以我做到了,但我不知道优先级队列认为最高优先级是什么,是吗 是最重的边缘还是最轻的边缘?此外,优先级队列会将同一对象添加两次,还是作为一个集合 这是我的密码: Public class Edge implements Comparable<Edge> { int weight; public

因此,我试图构建我的第一个prim算法,为此,我按照优先级trought(它的权重)对边进行排序

所以我想如果我使用优先级队列会很有帮助,为此我需要让我的edge实现可比较的接口,所以我做到了,但我不知道优先级队列认为最高优先级是什么,是吗 是最重的边缘还是最轻的边缘?此外,优先级队列会将同一对象添加两次,还是作为一个集合

这是我的密码:

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

   public int compareTo(Edge e) {
      return e.getWeight() - this.weight;
   }
}
公共类边缘实现可比较{
整数权重;
公共内部比较(边缘e){
返回e.getWeight()-这个.weight;
}
}
我希望获得最轻的边缘作为最高优先级。
值得注意的是,这是我第一次实现优先级队列,优先级队列使用的是对象的自然顺序。具有最高优先级的对象将始终位于队列的前面

我也会把你的比较器改成这样

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
}
public int compareTo(边缘e)
{
如果(例如getWeight()>this.weight)
返回1;
else if(e.getWeight()==this.weight)
返回0;
else//e.getWeight()
compariable主要用于排序:在旁注上-什么是
weight w
weight
是另一个类吗?我对weight类型的看法不好,它是一个整数,所以最高优先级应该是最高值?不是我想的最低值?是的,如果这是实现compareTo()的方法。如果你想先得到最小的值,你可以改变我实现它的方式?在某种程度上,我不能添加超过一个相同对象的实例。您的答案不完整。默认情况下,
PriorityQueue
使用自然排序。但您也可以调用构造函数来指定带有自定义比较器的队列。例如,见。