【发布时间】:2020-01-26 14:32:33
【问题描述】:
我想根据一些规则在Java中对二维数组的array进行排序,比如说到原点的距离。我看到了几种使用Arrays.sort()的方法:
1) Arrays.sort(points, Comparator.comparing(p -> p[0]*p[0] + p[1]*p[1]));
2)Arrays.sort(points, (p1, p2) -> p1[0]*p1[0] + p1[1]*p1[1] - p2[0]*p2[0] - p2[1]*p2[1]);
3) 定义class:
class Point implements Comparable<Point>{
// class variables, constructor
public int compareTo(Point p) {
return (x*x + y*y).compareTo(p.x*p.x + p.y*p.y);
}
}
然后创建Points 类型的数组pts 并使用Arrays.sort(pts)。我的问题是关于 1) 和 2):我看到了两者之间的区别,但我不明白什么时候使用一个,什么时候使用另一个,以及究竟是什么@987654330 @ 是在做。为什么第一个解决方案只用一个点携带信息,而第二个解决方案需要两个点?
【问题讨论】:
标签: java arrays class comparator