Java排序2D数组

Java排序2D数组,java,computer-science,Java,Computer Science,给定这样一个2d数组 double[][] y = {{5,1},{0,0},{5,3},{5,2},{10,3},{12,100},{0,0}}; 我该如何把它分类到它喜欢的地方 { {0,0},{0,0},{5,1},{5,2},{5,3},{10,3},{12,100} }; 这是我目前的方法 Arrays.sort(sortedPoints, new Comparator<double[]>() { @Override

给定这样一个2d数组

double[][] y = {{5,1},{0,0},{5,3},{5,2},{10,3},{12,100},{0,0}};
我该如何把它分类到它喜欢的地方

{ {0,0},{0,0},{5,1},{5,2},{5,3},{10,3},{12,100} };
这是我目前的方法

        Arrays.sort(sortedPoints, new Comparator<double[]>() {      
            @Override
            public int compare(double[] o1, double[] o2) {
                return Double.compare(o2[0], o1[0]);
            }
        });
Arrays.sort(sortedPoints,new Comparator(){
@凌驾
公共整数比较(双[]o1,双[]o2){
返回Double.compare(o2[0],o1[0]);
}
});

仅当您尝试基于子数组和进行排序时,此选项才起作用

Arrays.sort(sortedPoints, new Comparator<double[]>() {      
            @Override
            public int compare(double[] o1, double[] o2) {
                return Double.compare(o1[0]+o1[1],o2[0]+o2[1]);
            }
        });
Arrays.sort(sortedPoints,new Comparator(){
@凌驾
公共整数比较(双[]o1,双[]o2){
返回双精度。比较(o1[0]+o1[1],o2[0]+o2[1]);
}
});

对代码做了一些小的更改

使用lambda将短:D

Arrays.sort(y, (d1, d2) -> Double.compare(d1[0] + d1[1], d2[0] + d2[1]));

您可以对数组进行两次排序,首先按第二个字段排序,然后按第一个字段排序

下面是一个例子:

public static void main(String[] args)
{
    System.out.println("Start");
    double[][] y = {{5,1},{0,0},{5,3},{5,2},{10,3},{12,100},{0,0}};

    Arrays.sort(y, (var a, var b) -> (int)(a[1]- b[1]));
    Arrays.sort(y, (var a, var b) -> (int)(a[0]- b[0]));

    for (int i = 0; i < y.length ; i++)
    {
        System.out.println("[" + y[i][0] + " , " + y[i][1] + "]");
    }

    System.out.println("End");}
}
publicstaticvoidmain(字符串[]args)
{
系统输出打印项次(“开始”);
double[]y={{5,1},{0,0},{5,3},{5,2},{10,3},{12100},{0,0};
sort(y,(vara,varb)->(int)(a[1]-b[1]);
sort(y,(vara,varb)->(int)(a[0]-b[0]);
对于(int i=0;i
您是否尝试按其总和对其进行排序?如果我错了,请纠正我,或者您正在尝试按索引0处的元素排序,然后按索引1排序?