所以我是优先排队的新手。在我试图实现的算法中,我想根据存储节点的functionValue对优先级队列进行排序。我不明白优先级队列将如何通过该值对节点进行排序,而不是我的节点对象的其他八个实例变量之一。我很确定我定义了一个Comparator对象来定义比较/排序规则,但是我无法为Comparator创建Oracle类库的正面或反面。
以下是我的Node Class的属性
public class Node{
public char label; //Holds char for the Move used; U, D, L, R
public boolean visited = false;
public State nodeState; //Each node holds a State object
int depth;
int heuristicCount;
int functionCount; <--- This is the property I want the priority queue to sort by.
.
.
.
答案 0 :(得分:1)
Comparator
是一个非常简单的界面。你有什么困难?关键位是compare
method。您只需实现它来比较您的类的两个实例。类似的东西:
public class NodeComparator implements Comparator<Node> {
public int compare(Node a, Node b) {
Integer aCount = a.getFunctionCount();
Integer bCount = b.getFunctionCount();
return a.compareTo(b);
}
}