通过X值对List <Point>进行排序的有效方法

arq*_*qam 3 java sorting

我正在做一些排序操作,我使用的数据结构是一个List<Point>.

现在,这点有两个值xy,和值在排序的方式给予不.

我必须List<Point>根据x的值以有效的方式对此进行排序,增加x或减少x.

一种解决方案可以是解析每个值的蛮力方法,并将该值与所有其他值进行比较以找到每次迭代中的最小值,但这将是一种低效的方法.

还有什么其他解决方案可用于此问题.

编辑:点来自org.opencv.core包裹.

Tho*_*sch 6

我假设你在谈论课程java.awt.Point,因此有一个getX()方法.

使用Java 8,您可以按x以下方式排序点:

List<Point> points = ...;
points.sort(Comparator.comparing(Point::getX));
Run Code Online (Sandbox Code Playgroud)

在较低版本的Java中,例如7,您可以实现Comparator以实现此目的:

List<Point> points = ...;
Collections.sort(points, new Comparator<Point>() {
    @Override
    public int compare(Point p1, Point p2) {
        return Double.compare(p1.getX(), p2.getX());
    }
});
Run Code Online (Sandbox Code Playgroud)

  • @arqam,它不应该是一个问题`points.sort(Comparator.comparing(point - > point.x));`使用`lambda`表达式而不是方法引用. (2认同)