2016-05-29 8 views
0

私はプログラミングコースで与えられたいくつかの古いタスクに取り組んでいます。 いくつかの基本機能と多くのComparableクラスとComparatorクラスを持つRectangleクラスを作成することになっています。独自のcompareToを実装し、メソッドを比較します

これは、私がすでに持っているものされています

public class Rectangle { 
    private int length, width; 
    public Rectangle(int length, int width) { 
     this.length = length; 
     this.width = width; 
    } 
    public int length() { 
     return length; 
    } 
    public int width() { 
     return width; 
    } 
    public int area() { 
     return length + width; 
    } 
    public int perimeter() { 
     return 2 * length + 2 * width; 
    } 
} 

public class RectangleComparable extends Rectangle implements Comparable<RectangleComparable> { 
    public RectangleComparable(int length, int width) { 
     super(length, width); 
    } 
    @Override 
    public int compareTo(RectangleComparable r) { 
     if (this.area() < o.area()) return -1; 
     else if (this.area > o.area()) return 1; 
     else return 0; 
    } 
} 

public class RectangleComparatorArea implements Comparable<RectangleComparable> { 
    private int area; 
    @Override 
    public int compareTo(RectangleComparable r) { 
     if (area < r.area()) return -1; 
     else if (area > r.area()) return 1; 
     else return 0; 
    } 
} 

public class RectangleComparatorPerimeter implements Comparable<RectangleComparable> { 
    private int perimeter; 
    @Override 
    public int compareTo(RectangleComparable r) { 
     if (perimeter < r.perimeter()) return -1; 
     else if (perimeter > r.perimeter()) return 1; 
     else return 0; 
    } 
} 

public class ComparableComparator<T> implements java.util.Comparator<T> { 
    public int compare(T o1, T o2) { 
     return 0; 
    } 
} 

を.equalsなど.compareTo、のような方法は何と呼ばれていますか?私はいくつかの

obj1.compareTo(obj2); 

を得たとき、私は私自身のcompareToメソッドを実装する場合と同様に、どのように私は、obj1が参照することができますか?

また、ComparableComparator.compareメソッドは四角形やその他の汎用型でも機能するはずですが、これをどのように開始するかはわかりません。

+0

あなたが "OBJ1参照してください。" とはどういう意味ですか?私はまさにあなたがやろうとしていることを混乱させています。メソッドをどのように使用するかの例を挙げることができますか? – 4castle

+0

は、RectangleComparatorAreaのcompareToメソッドに似ています。私はr1.compareTo(r2)を使用するとき、私はどのように私の方法でr1をアドレスすることができます。 r2はパラメータに基づいていますが、r1の場合、if/elseでどのように尋ねるかわかりません。 – koin

+0

'' 'Comparator <...>' ''と '' 'Comparable <...>' ''をネストされたクラスと混在させていませんか?彼らが最初のものを実装するのはもっと賢明なようです。 –

答えて

0
  1. this。これは、compareToが呼び出されるオブジェクトへの参照です。

  2. は、JDKの実装がどのように動作するかを参照してください:java.util.Comparators$NaturalOrderComparator(これは実装の詳細で、タフな、隠されている)

+0

私はこれを私の最初の行為で使ってみましたが、< or >は引数の型やその他のエラーのために未定義です。私はリンクtyをチェックアウトします。 – koin

関連する問題