私は再入力する方法がわからないので、プライオリティキューとコンパレータのジェネリック型に問題があります。ジェネリック型と独自の比較器
私がcompare(IRecord t、IRecord t1) `メソッドを呼び出すと、IRecordオブジェクトが必要ですが、ジェネリック型を比較する必要があります。
クラスAbstrPriorQueueはジェネリックでなければなりません。
は、オブジェクトIRecordで動作するコンパレータがあります:
public class MyComparator implements Comparator<IZaznam> {
@Override
public int compare(IRecord t, IRecord t1) {
if (t.getPriority() < t1.getPriority()) {
return -1;
} else if (t.getPriority() > t1.getPriority()) {
return 1;
} else {
return 0;
}
}
}
そして、これは私の短縮修道院キューです。私はコンストラクタにコンパレータを与えます。 IAbstrPriorQueueはインターフェイスのみです。
public class AbstrPriorQueue<T> implements IAbstrPriorQueue<T> {
// comparator
private MyComparator myComparator;
public AbstrPriorQueue(MyComparator myComparator) {
this.myComparator = myComparator;
}
@Override
public void insert(T data) {
T temp = list.getLast();
// there is a error (no suitable method found for compare(T,T))
if (myComparator.compare(data, temp) <= 0) {
// ....
}
}
}
私は何ができますか?
(つまり、より多くの観客を集めて助けいうだけの理由で)あなたは「すべて英語」のコードを置くことによって開始します。 – GhostCat