【发布时间】:2019-03-19 01:07:07
【问题描述】:
我正在尝试编写一个比较器来比较坐标类的两个对象。 Coordinate 类非常简单:
public class Coordinate {
private int x, y;
public Coordinate(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
现在我想让 Comparator 比较 Coordinate 类的两个实例的 x 和 y 值。这是一个例子:
我有一个坐标 c1,它有 x = 42 和 y = 23。我的第二个坐标 c2 有 x = 23 和 y = 54。现在我把它们都放在一个 ArrayList 中,并且想要对列表进行排序。我想按如下方式排序:
具有最低 y 值的坐标始终排在第一位,当您有两个具有相同 y 值的坐标时,坐标首先排在 x 值较低的位置。
示例:
c1 (y = 4, x = 5 ) < c2 (y = 4, x = 6) < c3 (y = 5, x = 2)
那么我该如何为此目的编写比较器呢?
非常感谢!
【问题讨论】:
-
你试过什么?如果比较器接收到两个坐标,您可以在比较器中的每个坐标上调用
getX和getY。
标签: java comparison comparator