0

だから私は優先キューに不慣れです。私が実装しようとしているアルゴリズムでは、格納されたノードの functionValue に従って優先キューをソートしたいと考えています。ノード オブジェクトの他の 8 つのインスタンス変数の 1 つではなく、プライオリティ キューがその値でノードをソートする方法を理解していません。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メソッドです。これを実装して、クラスの 2 つのインスタンスを比較するだけです。何かのようなもの:

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 に答える