ノード クラスを比較するカスタム コンパレータを作成しましたが、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;
}
}
getF は double を返します。ただし、いくつかのノードを優先キューに挿入した後、次を使用してそれらを出力します。
while(open.size() > 0) {
Node t = (Node)(open.remove());
System.out.println(t.getF());
}
結果は次のとおりです。
6.830951894845301
6.830951894845301
6.0
6.0
5.242640687119285
7.4031242374328485
7.4031242374328485
8.071067811865476
これがなぜそうなのか、何か考えはありますか?私のコンパレータは間違っていますか?ありがとう。
マイク