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

tobey_cheng 2013-08-02 03:58:42
先对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

-------------------------------
求解,这是为啥???
...全文
8725 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sffx123 2013-08-02
  • 打赏
  • 举报
回复
引用 1 楼 rencht 的回复:
哪本书啊,说出来让大家笑笑; reverse只是把原来的顺序逆反而已,并不能代你排序的;
+1
S117 2013-08-02
  • 打赏
  • 举报
回复
JDK 的方法名起的的还是不错的 sort 就是排序的意思啦 reverse 呢就是反转指定列表中元素的顺序。
rencht 2013-08-02
  • 打赏
  • 举报
回复
哪本书啊,说出来让大家笑笑; reverse只是把原来的顺序逆反而已,并不能代你排序的;

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧