1 public class Code_09_Comparator{
2 public static class Student{
3 public String name;
4 public int id;
5 public int age;
6 public Student(String name,int id,int age){
7 this.name=name;
8 this.id=id;
9 this.age=age;
10 }
11 }
12 public static class IdAscendingComparator imlements Comparator<Student>{//继承接口,接口内放置自己定义的想要比较的东西
13 @override
14 public int compara (Student 01,Student 02){
15 return 01.id-02.id;//如果01的值小,减完就是负数;02的值小减完就是正数;相等减完是0
16 }
17 public static class IdDescendingComparator implements Comparator<Student>{
18 @overrid
19 public int compare(Student 01,Student 02){
20 return 02.id-01.id;//降序排列id
21 }
22 public static class AgeAscendingComparators Comparator<Student>{
23 @override
24 public int compare (Stuent 01,Student 02){
25 return 01.age-02.age;//升序排列age
26 }
27 public static class AgeDescendingComparator implements Comparator<Student>{
28 @override
29 public int compare(Student 01,Student 02){
30 return 02.age-01.age;//降序排列age
31 }
32 public static void printStudents (Student[] Students){//输出函数
33 for(Student student : students){
34 System.out.println("Name:"+student.name+",Id:"+student.id+".Age:"+student.age);}
35 System.out.println("============");}
36 public static void main(String[] args){
37 Student student1 =new Student("A",1,23);
38 Student student2 =new Student("B",2,21);
39 Student student3 =new Student("C",3,22);
40
41 //建立数组,把学生1,2,3放进数组
42 Student[] students =new Student[]{student3,student2,student1};
43 printStudents(students);
44 Arrays.sort(students new IdAscendingComparator());//调用系统函数,①添加students有意义情况:数组,自己定义的比较器②单纯调用sort(students)按照内存地址排序(无意义),例如:基础类型根据数值从小到大排序。
45 printStudents(students);
46 Arrays.sort(students new IdDescendingComparator());
47 printStudents(students);
48 Arrays.sort(students new AgeScendingComparator());
49 printStudents(students);
50 Arrays.sort(students new AgeScendingComparator());
51 printStudents(students);
52
53 /*Integer[] arr={3,2,4,1,0}; Arrarys.sort(arr,newMycomp());printArray(arr);*/