最小優先度キューを利用するアルゴリズムを作成しようとしているので、Google で調べたところ、PriorityQueue が見つかりました。ただし、それを使用するには、どのように優先順位を付けたいかを伝える必要があり、これを行うにはコンパレータを使用する必要があるようです (「Node1」の特定のデータ フィールドを比較したい)オブジェクト)。より多くのグーグルは、 Comparator を実装するが比較メソッドをオーバーライドする新しいコンパレータを作成するというアイデアを提示しました。私がしようとしているのはこれです(そしてそれの他のバリエーションも):
import java.util.Comparator;
public class distComparator implements Comparator {
@Override
public int compare(Node1 x, Node1 y){
if(x.dist<y.dist){
return -1;
}
if(x.dist>y.dist){
return 1;
}
return 0;
}
}
コンパイラはいくつかの理由で抗議します。そのうちの 1 つは、コンパレータ クラスをオーバーライドしていないことです (これは抽象的であると言われています)。
エラー: distComparator は抽象的ではなく、Comparator の抽象メソッド compare(Object,Object) をオーバーライドしません
その問題を処理する「比較(オブジェクトx、オブジェクトy)」と言うように切り替えました。この時点で、コンパイラは x または y に「dist」変数が見つからないと文句を言いますが、これらは Object クラスではなく Node1 クラスの一部であるため、これは理にかなっています。
では、これはどのように機能するのでしょうか。どうやらtype を持つ必要がありObject
ますが、正しい変数にどのように指示すればよいでしょうか?