私はプログラミングコースで与えられたいくつかの古いタスクに取り組んでいます。 いくつかの基本機能と多くの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メソッドは四角形やその他の汎用型でも機能するはずですが、これをどのように開始するかはわかりません。
あなたが "OBJ1参照してください。" とはどういう意味ですか?私はまさにあなたがやろうとしていることを混乱させています。メソッドをどのように使用するかの例を挙げることができますか? – 4castle
は、RectangleComparatorAreaのcompareToメソッドに似ています。私はr1.compareTo(r2)を使用するとき、私はどのように私の方法でr1をアドレスすることができます。 r2はパラメータに基づいていますが、r1の場合、if/elseでどのように尋ねるかわかりません。 – koin
'' 'Comparator <...>' ''と '' 'Comparable <...>' ''をネストされたクラスと混在させていませんか?彼らが最初のものを実装するのはもっと賢明なようです。 –