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