import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
class Stu{
public String id;
public String name;
}
public class Test {
public static void main(String[] args) {
/*
* 注意,要想改变默认的排列顺序,不能使用基本类型(int,double,char)而要使用它们对应的类
*/
Integer[] a = { 9, 8, 7, 2, 3, 4, 1, 0, 6, 5 };
// 定义一个自定义类MyComparator的对象
Comparator cmp = new MyComparator();
Comparator cmp2 = new MyComparator2();
Arrays.sort(a, cmp);
for (int arr : a) {
System.out.print(arr + " ");
}
System.out.println();
// 二
Scanner sc=new Scanner(System.in);
Stu[] stu=new Stu[5];
for (int i=0;i<5;i++){
stu[i]=new Stu();
stu[i].id=sc.next();
stu[i].name=sc.next();
}
Arrays.sort(stu, cmp2);
for (int i = 0; i <5 ; i++) {
System.out.print(stu[i].id+" ");
System.out.println(stu[i].name);
}
// 三
}
}
// 实现Comparator接口
class MyComparator implements Comparator<Integer> {
@Override
public int compare(Integer o1, Integer o2) {
/*
* 如果o1小于o2,我们就返回正值,如果o1大于o2我们就返回负值, 这样颠倒一下,就可以实现降序排序了,反之即可自定义升序排序了
*/
return o2 - o1;
}
}
//输入 3 a 1 b 4 c 2 d 5 e
//按id降序排列(一级排序)
class MyComparator2 implements Comparator<Stu> {
@Override
public int compare(Stu o1, Stu o2) {
/*
* 如果o1小于o2,我们就返回正值,如果o1大于o2我们就返回负值, 这样颠倒一下,就可以实现降序排序了,反之即可自定义升序排序了
*/
return o2.id.compareTo(o1.id);
}
}
//二级排序(一级排序的属性相等时,另一属性可进行二级排序,同理可进行n级排序)