Java排序2D数组
给定这样一个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
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排序?