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
-------------------------------
求解,这是为啥???