内部类
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[][] arr = new int[n][3];
for (int i = 0; i < n; i++) {
for (int j = 0; j < 3; j++) {
arr[i][j] = scanner.nextInt();
}
}
Comparator comparator = new Demo0116.Test();
Arrays.sort(arr,comparator);
for (int i = 0; i < n; i++) {
for (int j = 0; j < 3; j++) {
if(j!=2)
System.out.print(arr[i][j] + " ");
else System.out.println(arr[i][j]);
}
}
}
static class Test implements Comparator<int[]>{
@Override
public int compare(int[] a, int[] b) {
if(a[0] != b[0]) return b[0] - a[0];
if(a[0] == b[0] && a[1] != b[1]) return b[1] - a[1];
if(a[0] == b[0] && a[1] == b[1] && a[2] != b[2]) return b[2] - a[2];
return 0;
}
}
匿名内部类
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[][] arr = new int[n][3];
for (int i = 0; i < n; i++) {
for (int j = 0; j < 3; j++) {
arr[i][j] = scanner.nextInt();
}
}
Comparator comparator = new Comparator() {
@Override
public int compare(Object o1, Object o2) {
int[] a = (int[]) o1;
int[] b = (int[]) o2;
if(a[0] != b[0]) return b[0] - a[0];
if(a[0] == b[0] && a[1] != b[1]) return b[1] - a[1];
if(a[0] == b[0] && a[1] == b[1] && a[2] != b[2]) return b[2] - a[2];
return 0;
}
};
Arrays.sort(arr,comparator);
for (int i = 0; i < n; i++) {
for (int j = 0; j < 3; j++) {
if(j!=2)
System.out.print(arr[i][j] + " ");
else System.out.println(arr[i][j]);
}
}
}
lambda表达式
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[][] arr = new int[n][3];
for (int i = 0; i < n; i++) {
for (int j = 0; j < 3; j++) {
arr[i][j] = scanner.nextInt();
}
}
Arrays.sort(arr,(a,b)->{
if(a[0] != b[0]) return b[0] - a[0];
if(a[0] == b[0] && a[1] != b[1]) return b[1] - a[1];
if(a[0] == b[0] && a[1] == b[1] && a[2] != b[2]) return b[2] - a[2];
return 0;
});
for (int i = 0; i < n; i++) {
for (int j = 0; j < 3; j++) {
if(j!=2)
System.out.print(arr[i][j] + " ");
else System.out.println(arr[i][j]);
}
}
}