我正在编写我的编程课程给出的一些旧任务。 我应该创建一个带有一些基本函数和许多Comparable和Comparator类的Rectangle类。
这就是我已经拥有的:
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;
}
}
什么是.compareTo,.equals等方法?就像,当我得到一些
obj1.compareTo(obj2);
当我实现自己的compareTo方法时,如何引用obj1?
ComparableComparator.compare方法也适用于Rectangles和其他Generic类型,但我不知道如何启动它。
答案 0 :(得分:0)
this
。这是对compareTo
被调用的对象的引用。
了解jdk的实施方式是如何运作的:java.util.Comparators$NaturalOrderComparator(这是实施细节,隐藏起来,很难)