当前位置:
首页 >>
英语考试 >>
学习手札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 HalfInsert
Sort(...
探究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 ...

更多相关标签: