Java 排序二维数组
Java sorting 2D array
给定一个这样的二维数组
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<double[]>() {
@Override
public int compare(double[] o1, double[] o2) {
return Double.compare(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");}
}
给定一个这样的二维数组
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<double[]>() {
@Override
public int compare(double[] o1, double[] o2) {
return Double.compare(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");}
}