我试图做一个首先按半径排序的compareTo方法。如果相同,则按x坐标排序。如果相同,则按y坐标排序。
circle类有一个带Point和(double)半径的构造函数。我不太确定如何解决这个问题,因为互联网上的其他compareTo方法只是比较2个对象。
答案 0 :(得分:1)
按顺序比较多个属性时,您只需比较第一个属性。如果它们是相同的,那么你比较第二个。如果它们是相同的,那么你比较第三个。
假设你正在使用java.awt.Point
,你可以这样做:
class Circle implements Comparable<Circle> {
private Point point;
private double radius;
// ... code ...
@Override
public int compareTo(Circle that) {
int cmp = Double.compare(this.radius, that.radius);
if (cmp == 0)
cmp = Double.compare(this.point.getX(), that.point.getX());
if (cmp == 0)
cmp = Double.compare(this.point.getY(), that.point.getY());
return cmp;
}
// ... code ...
}
如果您需要对3个圆圈进行排序,请将它们放入数组并对数组进行排序:
Circle[] circles = { new Circle(...),
new Circle(...),
new Circle(...) };
Arrays.sort(circles);