我试图在优先级队列中推送一些对象,我希望它们根据pathCost进行排序,这样最低的pathCost将始终位于队列的顶部。
Queue<Node> frontier = new PriorityQueue<>(7, Node.pathComparator);
Node n1 = new Node("z");n1.setPathCost(13);
Node n2 = new Node("a");n2.setPathCost(12);
Node n3 = new Node("f");n3.setPathCost(65);
Node n4 = new Node("h");n4.setPathCost(10);
frontier.add(n1);
frontier.add(n2);
frontier.add(n3);
frontier.add(n4);
System.out.println(frontier);
以下是我的Node类中Comparable的实现:
@Override
public int compareTo(Node node) {
return (this.pathCost - node.pathCost);
}
public static Comparator<Node> pathComparator = new Comparator<Node>() {
@Override
public int compare(Node n1, Node n2) {
return (int) (n1.getPathCost() - n2.getPathCost());
}
};
输出队列时,它不会根据pathCost进行排序!有谁知道问题出在哪里? 我的输出:[h,a,f,z]