使用Java对点列表进行排序

时间:2011-03-03 08:03:41

标签: java sorting

我有一个点对象列表,我想按某个坐标排序,比如x值。 Java是否提供了任何有用的机制,还是应该使用常见的排序算法之一?

4 个答案:

答案 0 :(得分:17)

是创建自定义Comparator,并使用它来对点列表进行排序

class Point{
    private int x;
    private int 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;
    }

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public Point() {
    }
}

List<Point> points = new ArrayList<Point>();
points.add(new Point(1, 2));
points.add(new Point(60, 50));
points.add(new Point(50, 3));
Collections.sort(points,new Comparator<Point>() {

public int compare(Point o1, Point o2) {
    return Integer.compare(o1.getX(), o2.getX());
}
});

答案 1 :(得分:5)

Point类中,您应该使用泛型类型<Point>实现Comparable接口,并使用Collections.sort(java.util包)进行排序List<Point>

假设:

class Point implements Comparable<Point>{
    int compareTo(Point other){ /* your logic */}
}

List<Point> list = new ArrayList<Point>();
/* adding points */
Collections.sort(list);

答案 2 :(得分:1)

您应该使您的point类实现Comparable接口,或者使用您自己的Comparator对象提供sort()方法,该对象告诉sort()如何对对象进行排序。这里有很多例子。

答案 3 :(得分:1)

您可以使用类似Bean Comparator的内容,这样您就不必继续创建自定义比较器。