用Javasorting列表点

我有一个点对象的列表,我想按某个坐标sorting,比如x值。 Java是否提供了任何有用的机制,还是应该利用其中一种常见的sortingalgorithm?

是创build一个自定义Comparator ,并使用它来sorting点的列表

 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()); } }); 

Point类中,您应该使用generics<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); 

你应该让你的point类实现Comparable接口,或者用你自己的Comparator对象提供sort()方法,它告诉sort()如何sorting你的对象。 这里有很多例子。

您可以使用Bean比较器之类的东西,因此您不必一直创build自定义比较器。