내 노드 클래스를 비교하기 위해 사용자 지정 비교기를 작성했지만 java 우선 순위 큐가 내 항목을 올바른 순서로 반환하지 않습니다. getF 더블을 반환Java : 사용자 지정 비교기에서 잘못된 순서를 반환하는 PriorityQueue?
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;
}
}
:
여기 내 비교기이다. 그러나 우선 순위 큐에 여러 개의 노드를 삽입 한 후, 나는 사용하여 인쇄 :
결과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
이 왜 그런지 어떤 아이디어? 내 비교기가 잘못 되었나요? 감사.
마이크
"Java 우선 순위 큐"는 어떤 실제 Java 클래스입니까 (PriorityQueue를 가정합니다). 어떻게 구성합니까? – Gray
java.util.PriorityQueue, 그렇습니까? – Ceilingfish
귀하의 질문에 대답하지 않지만 귀하의 콤퍼레이터를 단순화 할 수 있다는 것을 알았습니다 : return Double.compare (n1.getF(), n2.getF()); ' –