0

所以我是优先级队列的新手。在我尝试实现的算法中,我想根据存储节点的 functionValue 对优先级队列进行排序。我不明白优先级队列如何知道按该值对节点进行排序,而不是我的节点对象的其他八个实例变量之一。我很确定我定义了一个 Comparator 对象来定义比较/排序规则,但我无法为 Comparator 制作 Oracle 类库的正面或反面。

这是我的节点类的属性

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.
.
.
.
4

1 回答 1

1

Comparator是一个非常简单的界面。你有什么困难?关键是compare方法。您只需实现它来比较您的类的两个实例。就像是:

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);
    }
}
于 2012-10-06T17:18:26.117 回答