私はJavaで汎用ヒープクラスを実装しています。このクラスには2つのコンストラクターがあり、1つはパラメーターのないデフォルトのコンストラクターです。もう1つは、ユーザーがヒープの要素を比較する方法を制御できるように、ユーザーが渡すことができるコンパレータオブジェクトを取り込みます。ここで、ユーザーがデフォルトのコンストラクターを使用する場合、クラスでデフォルトのコンパレーターオブジェクトを使用する必要があります。このオブジェクトのcompareメソッドは、compareTo()メソッド(Comparableインターフェイスの一部)を呼び出すだけです。これを行う方法はありますか?もしそうなら、どのように?
質問する
3237 次
4 に答える
2
一般的なコンパレータは次のようになります。
public class ComparableComparator<T extends Comparable<T>> implements Comparator<T> {
@Override
public int compare(T lhs, T rhs) {
return lhs.compareTo(rhs);
}
}
于 2012-10-20T21:56:34.590 に答える
1
ComparableComparator
任意の2Object
秒を取り、それらが実装されている場合はそれらを比較するApacheCommonsから使用しますComparable
。
または、コンパレータを使用しないコンストラクタは、K extends Comparable<K>
型パラメータを適用する必要があります。
于 2012-10-20T21:57:38.410 に答える
1
Guavaは、「自然な順序付け」Comparator
を-予想通り-として提供しますOrdering.natural()
。
于 2012-10-20T22:14:59.370 に答える
1
Java 8にはComparator.naturalOrder()
、デフォルトのコンパレータとして使用できるものがあります。詳細については、 java.util.ComparatorAPIを参照してください。
于 2016-11-30T14:44:31.643 に答える