9512.net
甜梦文库
当前位置:首页 >> 英语考试 >>

学习手札1:关于Collections.sort()对列表排序的学习


学习手札 1:关于 Collections.sort()对列表排序的学习

最近收到一些 Java 初学者对 Java 关于 ArrayList 的排序问题, 然后给 他们解释 Collections.sort()方法的时候, 总是无法解释清楚。 在使用的时 候,常常很头疼,因为不知道返回什么样的值才能达到升序效果,返回什么样的 值才能达到降序效果。 今天,对这一部分进行了一次梳理,也算是对这个排序做一次总结。 首先,我们来看一个例子吧:现在,需要遍历一个文件夹,要求 XML 文件 靠前。我们得到了无序的文件列表 ArrayList<File> files,这个时候排序 代码如下:
Collections.sort(files, new Comparator<File>() { public int compare(File arg0, File arg1) { if (arg0.getName().endsWith(".XML")) return -1; else if (arg1.getName().endsWith(".XML")) return 1; return 0; } }); 注意:这里没有使用忽略大小写的比较方式,如果文件后缀名为小写 ".xml",则比较失败。 不过这个不是我要说明的重点。

对于上述比较,为什么 arg0 的时候返回-1,arg1 的时候返回 1?同理, 对于两个文件,哪个文件靠前,哪个文件靠后,方法 compare(File arg0, File arg1),应该返回什么样的值,才能达到理想效果? OK,看看 JDK1.6 的 API,关于 Comparator 的介绍: Comparator.compare(T o1,T o2),返回的是 o1 与 o2 比较的大小, 返回值只有三种可能:负数、0、正数。 用一个数学公式来抽象:return (o1-o2) 如果 o1-o2<0,返回负数,此时就应该是 o1 在前面。

如果 o1-o2>0,返回正数,此时就应该是 o2 在前面。 o1=o2 的情况就不罗嗦。

从 API 的介绍以及我自己理解,我等到的结论是:Comparator.compare(), 默认是做升序排序的。 所以,回过头来,我们看上面的例子: 当第一个文件 arg0 为 XML 文件的时候, 我们返回-1; 此时满足 o1-o2<0 的条 件; 当第二个文件 arg1 为 XML 文件的时候,我们返回 1。测试满足 o1-o2>0 的条 件。 最后,如果要降序排序,只需要变换比较公式即可:return -(o1-o2) = return o2-o1;
如果要第一个参数靠前,那么就要返回小于 0 的数字;如果要第二个参数靠前,就要返回 大于 0 的数字。


赞助商链接

更多相关文章:
排序学习方法总结
排序学习方法总结_互联网_IT/计算机_专业资料。排序学习是当前文本检索领域的研究热点,它使用机器学习的方法训练出对数据排序特征的排序函数。...
(21).使用CollectionView实现对绑定数据的排序、筛选、...
(collections); // 清除原有的排序 view.SortDescriptions.Clear(); // 获取...例如,在前面的例子中添加对单价的筛选条件: 1: <!-- 在界面中添加 Grid 的...
Java ArrayList的不同排序方法
排序字符串对象的 ArrayList 考虑个 ArrayList 存储着以字符串形式存在的国名(country name) ,为了 对这个 ArrayList 进行排序,你需要调用 Collections.sort()方法...
C语言-八大排序实例学习总结
C语言-八大排序实例学习总结_计算机软件及应用_IT/计算机_专业资料。C语言-八大...每一个元素 */ 二.二分插入法 /* 二分插入法 */ void HalfInsertSort(...
探究LTR(学习排序)各方法的优劣性
目前,学习排序方法分为 3 种:单文档方法、文档对方法和文档列表方法。 单文档方法比较简单,该方法就像是知道两个点的坐标,确定条直线的函 数关系式样。对于...
综合排序(课程设计)
1.2 背景在学习了数据结构中排序一章节时, 各种...排序 void sort(int a[N],int n):冒泡排序 int...27 六、课程设计心得体会通过这次课程设计的学习让我...
大班数学教案:学习按规律排序
设计意图: 排序是将两个以上物体根据某种特征 上的差异,按有一定的规则排列程序。排序 是建立在对事物比较的基础上,它需要有 定的判断推理能力。大班幼儿能够...
Java ArrayList 的不同排序方法
排序字符串对象的 ArrayList 考虑个 ArrayList 存储着以字符串形式存在的国名 (country name) , 为了对这个 ArrayList 进行排序,你需要调用 Collections.sort()...
List对象排序通用方法
List对象排序通用方法_IT/计算机_专业资料。在数据库中查出来的列表中,往往需要...一般对 list 排序可以使用 Collections.sort(list),但如果 list 中包含是个...
学生学习手册 2014
问题的排序和 修改 三、收集市场信息资料 1.设计访问手册,进行演练 2.对实训...综合实训教学学生学习手册 题目 2 所选的信息分析方法的应用(列表,图形) 14 ...
更多相关标签:

All rights reserved Powered by 甜梦文库 9512.net

copyright ©right 2010-2021。
甜梦文库内容来自网络,如有侵犯请联系客服。zhit325@126.com|网站地图