/*
* 实现按第二个数升序 第一个数降序排序
*/
public static void main(String[] args) {
int[][] nums = {{1,3},{2,5},{6,2},{0,-1},{0,5}};
// 方法一
/*
Arrays.sort(nums,new Comparator<int[]>() {
@Override
public int compare(int[] a, int[] b) { // 重写方法
if(a[1] == b[1]) {
return a[1] - b[0];
} else {
return a[1] - b[1];
}
}
});
// 输出二维数组
System.out.println(Arrays.deepToString(nums)); // [[0, -1], [6, 2], [1, 3], [2, 5], [0, 5]]
*/
// 方法二
Arrays.sort(nums,(a,b)->a[1]==b[1]?b[0]-a[0]:a[1]-b[1]);
System.out.println(Arrays.deepToString(nums)); //[[0, -1], [6, 2], [1, 3], [2, 5], [0, 5]]
}
举个栗子
// 对学生信息进行自定义排序
Scanner scan = new Scanner(System.in);
System.out.println("请输入学生个数:");
int n = scan.nextInt();
String[][] nums = new String[n][2];
for(int i=0;i<n;i++) {
nums[i][0] = scan.next(); // 姓名
nums[i][1] = scan.next(); // 成绩
}
Arrays.sort(nums,(a,b)->b[1].compareTo(a[1]));
System.out.println(Arrays.deepToString(nums)); // 降序排序
请输入学生个数:
3
yang 78
wang 89
liu 98
下面是输出结果:
[[liu, 98], [wang, 89], [yang, 78]]