小编Mic*_*son的帖子

Java:PriorityQueue从自定义比较器返回错误的排序?

我编写了一个自定义比较器来比较我的节点类,但是java优先级队列没有以正确的顺序返回我的项目.

这是我的比较器:

public int compare(Node n1, Node n2){

    if (n1.getF() > n2.getF()){
        return +1;
    }
    else if (n1.getF() < n2.getF()){
        return -1;
    }
    else {  // equal
        return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

其中getF返回一个double.但是,在将多个节点插入优先级队列后,我将其打印出来:

while(open.size() > 0) {
    Node t = (Node)(open.remove());
    System.out.println(t.getF());
}
Run Code Online (Sandbox Code Playgroud)

结果如下:

6.830951894845301
6.830951894845301
6.0
6.0
5.242640687119285
7.4031242374328485
7.4031242374328485
8.071067811865476
Run Code Online (Sandbox Code Playgroud)

任何想法为什么会这样?我的比较器错了吗?谢谢.

麦克风

java priority-queue comparator

5
推荐指数
1
解决办法
9894
查看次数

标签 统计

comparator ×1

java ×1

priority-queue ×1