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);*/