如何在Java中对一组对象(点)进行排序?

时间:2010-06-20 00:28:30

标签: java arrays sorting object

所以我想用一个特定的坐标,比如x,使用内置的排序方法对一系列点进行排序。我怎样才能做到这一点?下面是示例代码:

Point A[] = new Point[10];
// ... Initialize etc.
Arrays.sort(A, x-coordinate);

Point Class中是否有内置的x坐标比较器?如果没有,我该如何创建并使用它。一个例子就是很棒。

感谢。

2 个答案:

答案 0 :(得分:8)

Point不是Comparable因此您需要编写自己的比较器并在调用Arrays.sort时将其传入。幸运的是,这并不太难:

class PointCmp implements Comparator<Point> {
    int compare(Point a, Point b) {
        return (a.x < b.x) ? -1 : (a.x > b.x) ? 1 : 0;
    }
}

Arrays.sort(A, new PointCmp());

答案 1 :(得分:2)

您也可以使用Apache Commons Bean Comparator

http://commons.apache.org/beanutils/apidocs/org/apache/commons/beanutils/BeanComparator.html

然后执行类似

的操作
import org.apache.commons.beanutils.BeanComparator;

Arrays.sort(A, new BeanComparator("x"));