上次提问没有搞明白,不好意思又发帖了,现在不明白public static <T> void sort(List<T> list,
                            Comparator<? super T> c)根据指定比较器产生的顺序对指定列表进行排序。

解决方案 »

  1.   

    网上找的代码import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;public class ComparableTest {
     public static void main(String[] args) {
      Comparator<Student> comparator = new Comparator<Student>(){
       public int compare(Student s1, Student s2) {
        //先排年龄
        if(s1.age!=s2.age){
         return s1.age-s2.age;
        }
        else{
         //年龄相同则按姓名排序
         if(!s1.name.equals(s2.name)){
          return s1.name.compareTo(s2.name);
         }
         else{
          //姓名也相同则按学号排序
          return s1.id-s2.id;
         }
        }
       }
      };
      Student stu1 = new Student (1,"zhangsan","male",28,"cs");
      Student stu2 = new Student (2,"lisi","female",19,"cs");
      Student stu3 = new Student (3,"wangwu","male",22,"cs");
      Student stu4 = new Student (4,"zhaoliu","female",17,"cs");
      Student stu5 = new Student (5,"jiaoming","male",22,"cs");  ArrayList<Student> List = new ArrayList<Student>();
      List.add(stu1);
      List.add(stu2);
      List.add(stu3);
      List.add(stu4);
      List.add(stu5); 
      //这里就会自动根据规则进行排序
      Collections.sort(List,comparator);
      display(List);
     }
     
     static void display(ArrayList<Student> lst){
      for(Student s:lst)
       System.out.println(s);
     }
    }class Student{
     int age;
     int id;
     String gender;
     String name;
     String cs;
     Student(int id,String name,String gender,int age,String cs){
      this.age=age;
      this.name=name;
      this.gender=gender;
      this.id=id;
      this.cs=cs;
     }
     public String toString(){
      return id+"  "+name+"  "+gender+"  "+age+"  "+cs;
     }
    }
      

  2.   

    还有这句Comparator<Student> comparator = new Comparator<Student>(){
      

  3.   

    public static <T> void sort(List<T> list, Comparator<? super T> c)
    说白了,就是集成一个比较器类,实现某种比较方法
    然后sort的时候,java就会遍历这个list,对数据调用这个方法进行排序。
    有问题请细问,不要说得这么模糊,要不回答也只能很模糊
      

  4.   

    那这句呢 Comparator<Student> comparator = new Comparator<Student>(){
      

  5.   

    那这句呢 Comparator<Student> comparator = new Comparator<Student>(){
    定义一个排序的类,这个类对含有Student的集合进行排序,后面就是具体的实现方法。
    这应该算是一个匿名内部类吧。
      

  6.   

    那这句呢 Comparator<Student> comparator = new Comparator<Student>(){
    定义一个排序的类,这个类对含有Student的集合进行排序,后面就是具体的实现方法。
    这应该算是一个匿名内部类吧。可以详细的给我讲下这句的语法吗,
      

  7.   

    那这句呢 Comparator<Student> comparator = new Comparator<Student>(){
    定义一个排序的类,这个类对含有Student的集合进行排序,后面就是具体的实现方法。
    这应该算是一个匿名内部类吧。可以详细的给我讲下这句的语法吗,
    真没什么语法,你想想就是实例化一个对象类——new Comparator<Student>()
    并且定义这个对象类只能排序Student对象而已——<Student>
    {
    }
    里面的这些事重写了Comparator中的方法,
    Comparator为抽象类,里面某些方法是需要重写的
      

  8.   

    那这句呢 Comparator<Student> comparator = new Comparator<Student>(){
    定义一个排序的类,这个类对含有Student的集合进行排序,后面就是具体的实现方法。
    这应该算是一个匿名内部类吧。可以详细的给我讲下这句的语法吗,
    真没什么语法,你想想就是实例化一个对象类——new Comparator<Student>()
    并且定义这个对象类只能排序Student对象而已——<Student>
    {
    }
    里面的这些事重写了Comparator中的方法,
    Comparator为抽象类,里面某些方法是需要重写的
    刚才看了下   thinking in java 匿名内部类懂了 谢谢你