尝试按存储节点的值之一对优先级队列进行排序

时间:2012-10-06 16:05:15

标签: java object priority-queue comparator

所以我是优先排队的新手。在我试图实现的算法中,我想根据存储节点的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.
.
.
.

1 个答案:

答案 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);
    }
}