我想对某个Integer list进行倒序排序,下面是代码:
class ListComparator implements Comparator<Integer> {
    @Override
    public int compare(Integer o1, Integer o2) {
        if (o1 > o2)
            return -1;
        else
            return 1;
    }
}public class ReverseOrder {
    public static void main(String[] args) {
        List<Integer> list = new LinkedList<Integer>();
        list.add(1);
        list.add(3);
        list.add(2);
        System.out.println(list);
        ListComparator c = null;
        Collections.sort(list, c);
        System.out.println(list);
    }
}输出结果是:
    [1, 3, 2]
    [1, 2, 3]输出结果还是顺序排序,但我期望的是倒序。
请教大家为什么结果还是顺序排序啊?

解决方案 »

  1.   

    public int compare(Integer o1, Integer o2) { 
            if (o1 > o2) 
                return -1;
            else if (o1 == o2)
                return 0; 
            else 
                return 1; 
        } 
    改成这样:
    import java.util.*;class ListComparator implements Comparator <Integer> {     public int compare(Integer o1, Integer o2) { 
            if (o1 > o2) 
                return -1; 
            else if(o1 == o2)
             return 0;
            else 
                return 1; 
        } 
    } public class ReverseOrder { 
        public static void main(String[] args) { 
            List <Integer> list = new LinkedList <Integer>(); 
            list.add(1); 
            list.add(3); 
            list.add(2); 
            System.out.println(list); 
     
            Collections.sort(list, new ListComparator()); 
            
            System.out.println(list); 
        } 
      

  2.   

    ListComparator c = null; c都没实例化,当然是默认的法则了
      

  3.   

    ListComparator c = null;
    Collections.sort(list, c); 
    这不相当于把null传进去了嘛。
    ListComparator c = new ListComparator()
      

  4.   


            public static void main(String[] args) {
      List<Integer> list = new LinkedList<Integer>();
    list.add(1);
    list.add(3);
    list.add(2);
    System.out.println(list);
    Collections.sort(list, new Comparator<Integer>() {
    public int compare(Integer arg0, Integer arg1) {
    // TODO Auto-generated method stub
    return arg1 - arg0;
    }
    });
    System.out.println(list);
    }
      

  5.   

    恩,谢谢各位。是因为我传入了null