При сравнении нескольких свойств в порядке, аналогичном этому, вы просто сравниваете первое. Если они совпадают, то вы сравниваете второе. И если они одинаковы, то вы сравниваете третий.
Предполагая, что вы используете 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);
You» re все еще сравнивает два объекта. Сравнение просто связано с тремя их свойствами. – Savior
Уверен, что вы слишком много делаете в сравнении. Просто сравните с двумя объектами. Если я правильно понимаю вас, это вводит в заблуждение. – ChiefTwoPencils
Вы можете реализовать 'Comparable' в вашем классе 'Circle' и определить собственный метод compareTo. –
Logan