我有 2D 数组,它有 2 列,我想对其进行排序。
输入是这样的:
第一栏.....第二栏
3......................2
4......................9
3......................1
5......................0
1......................2
输出是这样的:
第一栏.....第二栏
5......................0
4......................9
3......................2
3......................1
1......................2
我是Java初学者。
请帮我编写一个函数代码(mySort(int[][] arr)来对数组进行排序。
您可以使用自定义比较器进行排序:
Arrays.sort(datas, new Comparator<Integer[]>() {
@Override
public int compare(Integer[] entry1, Integer[] entry2) {
if(entry1[0] == entry2[0]){
return entry2[1] - entry1[1];
}
return entry2[0] - entry1[0];
}
});
使用java 8时,也可以这样做:
Comparator<int[]> comparator = Comparator.<int[]>comparing(x -> x[0])
.thenComparing(x -> x[1]);
// when
Arrays.sort(a, comparator.reversed());
对于 n*2 数组
基于第1列排序(升序)
Arrays.sort(arr, (a,b)-> {
if(a[0] == b[0]){
return a[1] - b[1];
}
return a[0] - b[0];
});
//这里'arr'是一个n*2数组
根据第1列排序(降序)
Arrays.sort(arr, (a,b)-> {
if(b[0] == a[0]){
return b[1] - a[1];
}
return b[0] - a[0];
});
基于第2列排序(升序)
Arrays.sort(arr, (a,b)-> {
if(a[1] == b[1]){
return a[0] - b[0];
}
return a[1] - b[1];
});
根据第2列排序(降序)
Arrays.sort(arr, (a,b)-> {
if(b[1] == a[1]){
return b[0] - a[0];
}
return b[1] - a[1];
});
在java 8中,你可以使用
Arrays.sort(array, (a,b) -> (b[0],a[0])); // in a descending order