我有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)对数组进行排序。
答案 0 :(得分:1)
您可以使用自定义比较器进行排序:
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];
}
});
答案 1 :(得分:0)
使用java 8时,您也可以这样做:
Comparator<Integer[]> comparator = Comparator.comparing(x -> x[0])
.thenComparing(x -> x[1]);
// when
Arrays.sort(a, comparator.reversed());
答案 2 :(得分:0)
在Java 8中,您可以使用
Arrays.sort(array, (a,b) -> (b[0],a[0])); // in a descending order
答案 3 :(得分:0)
对于 n*2 数组
按 column1 排序(升序)
Arrays.sort(arr, (a,b)-> {
if(a[0] == b[0]){
return a[1] - b[1];
}
return a[0] - b[0];
});
//这里'arr'是一个n*2的数组
基于 column1(降序)排序
Arrays.sort(arr, (a,b)-> {
if(b[0] == a[0]){
return b[1] - a[1];
}
return b[0] - a[0];
});
按 column2 排序(升序)
Arrays.sort(arr, (a,b)-> {
if(a[1] == b[1]){
return a[0] - b[0];
}
return a[1] - b[1];
});
基于 column2(降序)排序
Arrays.sort(arr, (a,b)-> {
if(b[1] == a[1]){
return b[0] - a[0];
}
return b[1] - a[1];
});