Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对列表进行排序的有效方法<;点>;按X值_Java_Sorting - Fatal编程技术网

Java 对列表进行排序的有效方法<;点>;按X值

Java 对列表进行排序的有效方法<;点>;按X值,java,sorting,Java,Sorting,我正在做一些排序操作,我使用的数据结构是一个列表 现在该点有两个值x和y,并且这些值不是以排序方式给出的 我必须根据x的值对这个列表进行有效排序,要么增加x,要么减少x 一种解决方案可以是一种蛮力方法,通过解析每个值并将该值与所有其他值进行比较,以在每次迭代中找到最小值,但这将是一种低效的方法 对于这个问题,还有什么其他的解决方案可以使用 编辑:要点来自软件包。我想你们是在谈论课堂, 因此有一个getX()方法 使用Java 8,您可以按x对点进行排序: List<Point> po

我正在做一些排序操作,我使用的数据结构是一个
列表

现在该点有两个值
x
y
,并且这些值不是以排序方式给出的

我必须根据x的值对这个
列表
进行有效排序,要么增加x,要么减少x

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

对于这个问题,还有什么其他的解决方案可以使用


编辑:要点来自软件包。

我想你们是在谈论课堂, 因此有一个
getX()
方法

使用Java 8,您可以按
x
对点进行排序:

List<Point> points = ...;
points.sort(Comparator.comparing(Point::getX));

为什么不编写一个
点类
并重写
equals()/hashcode()
和其他操作符,然后应用sort呢。或者您可以使用可用的
Map
类。@SatishPatel将y值也附加到x上。因此。。。你是在问吗?@Pelocho在这种情况下不能使用直接排序。为什么?所以你需要排序而不需要排序?这是一个很好的答案,很多人都会得到帮助。但不幸的是,在我的例子中,它是
org.opencv.Core
@arqam,它不应该是一个问题
points.sort(Comparator.comparing(point->point.x))使用
lambda
表达式而不是方法引用。
List<Point> points = ...;
Collections.sort(points, new Comparator<Point>() {
    @Override
    public int compare(Point p1, Point p2) {
        return Double.compare(p1.getX(), p2.getX());
    }
});