当前位置:编程学习 > JAVA >>

Collections集合的sort与reverse排列困惑??求解!!!

先对Collections两个方法的使用引用下书上的说法:
Sort方法:使用sort方法可以根据元素的自然顺序 对指定列表按升序进行排序。
Reverse方法:使用Reverse方法可以根据元素的自然顺序 对指定列表按降序进行排序。
测试代码:
    public static void main(String[] args) {
     List list = new ArrayList<Double>();
     double array[] = {112, 111, 23, 456, 231 };
     for (int i = 0; i < array.length; i++) {
     list.add(new Double(array[i]));
     }
     Collections.sort(list);
     System.out.println("======sort排列=====");
     for (int i = 0; i < array.length; i++) {
        System.out.println(list.get(i));
     }  
    }
-------------------------------------
输出:
======sort排列=====
23.0
111.0
112.0
231.0
456.0
------------
可以看出上面的排序符合我们的要求,再看下面代码:
    public static void main(String[] args) {
     List list = new ArrayList<Double>();
     double array[] = {112, 111, 23, 456, 231 };
     for (int i = 0; i < array.length; i++) {
     list.add(new Double(array[i]));
     }
     System.out.println("======reverse排列=====");
     Collections.reverse(list);
     for (int i = 0; i < array.length; i++) {
        System.out.println(list.get(i));
     } 
    }
------------------------------
输出:
======reverse排列=====
231.0
456.0
23.0
111.0
112.0
------------------------
这个结果无法接受,但如果先用sort排序,再用reverse排序,又好了:
    public static void main(String[] args) {
     List list = new ArrayList<Double>();
     double array[] = {112, 111, 23, 456, 231 };
     for (int i = 0; i < array.length; i++) {
     list.add(new Double(array[i]));
     }
     Collections.sort(list);
     System.out.println("======sort排列=====");
     for (int i = 0; i < array.length; i++) {
        System.out.println(list.get(i));
     } 
     System.out.println("======reverse排列=====");
     Collections.reverse(list);
     for (int i = 0; i < array.length; i++) {
        System.out.println(list.get(i));
     } 
    }
---------------------------------
输出结果:
======sort排列=====
23.0
111.0
112.0
231.0
456.0
======reverse排列=====
456.0
231.0
112.0
111.0
23.0

-------------------------------
求解,这是为啥??? ArrayList collections sort reverse 排序 --------------------编程问答-------------------- 哪本书啊,说出来让大家笑笑;

reverse只是把原来的顺序逆反而已,并不能代你排序的; --------------------编程问答-------------------- JDK 的方法名起的的还是不错的
sort 就是排序的意思啦
reverse 呢就是反转指定列表中元素的顺序。 --------------------编程问答--------------------
引用 1 楼 rencht 的回复:
哪本书啊,说出来让大家笑笑;

reverse只是把原来的顺序逆反而已,并不能代你排序的;
+1
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,