JAVA ArrayList利用Comparator实现自定义排序
先说遇到的问题吧,,,ArrayList<String> 里面存放的本地文件路径,然后通过这个路径找到文件,按照文件的最后修改时间排序,,,,提起来没啥问题的,。,,当时写的代码这样的:
//根据路径对应的文件最后修改时间排序
private class SortByLastModifyTime implements Comparator {
@Override
public int compare(Object o1, Object o2) {
try {
File file1 = new File((String)o1);
File file2 = new File((String)o2);
if (file1.lastModified() < file2.lastModified()){
return 1;
}else{
return 0;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return 0;
}
}
}
//最后发现,怎么都不能实现排序,,,搞得人郁闷啊。,。,,奇怪怎么回事呢》?
检查代码都没问题吧,,,但是我还是相信,肯定是我的原因, 没办法,找吧。。。。
最后查看文档,发现返回值有正数,0,有负数。。。。那我上面为啥只写正数1,0呢》? 为啥没负数呢?
原因找到了:
int compare(Object o1, Object o2) 返回一个基本类型的整型
如果要按照升序排序,
则o1 小于o2,返回-1(负数),相等返回0,01大于02返回1(正数)
如果要按照降序排序
则o1 小于o2,返回1(正数),相等返回0,01大于02返回-1(负数)
所以: 上面的问题就很明显了,
//根据路径对应的文件最后修改时间排序
private class SortByLastModifyTime implements Comparator {
@Override
public int compare(Object o1, Object o2) {
try {
File file1 = new File((String)o1);
File file2 = new File((String)o2);
if (file1.lastModified() < file2.lastModified()){
return 1;
}else{
return -1;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return -1;
}
}
}
总结: 其实写代码遇到问题很正常的,保持一个平和的心态去解决,一切都可以搞定的
JAVA ArrayList利用Comparator实现自定义排序相关推荐
- Java之——利用Comparator接口对多个排序条件进行处理
转载自:http://blog.csdn.net/l1028386804/article/details/56513205 膜拜大神··· 一.需求 假设现在有个如此的需求:需要对一个这样的雇员列表进 ...
- java ArrayList按照某个属性升序排序
后端返回的数据,有时候需要做排序检查,或者客户端自己写排序.按照Bean中的某一个属性生序排列. public class ListSortTest {static class WorkBean {p ...
- java后台实现自定义排序,java 两种方式实现自定义排序
package test; //Comparable 使对象本身具有可比性,这种方式称为元素的自然顺序或默认顺序 //Comparator 元素自身不具备比较性或者比较性不是所需要的,在集合初始化让其 ...
- Spark自定义排序
1 当rdd是键值对的时候可以使用sortByKey进行排序,按照key进行排序,可以指定升序和降序 2 sortBy自定义字段进行排序 3 还可以在自定义类型时,继承Ordered,重写方法进行排序 ...
- Java针对ArrayList自定义排序的2种实现方法
这篇文章主要介绍了Java针对ArrayList自定义排序的2种实现方法,结合实例形式总结分析了Java操作ArrayList自定义排序的原理与相关实现技巧,下面就和动力节点java学院小编一起来看看 ...
- java 自定义对象 排序,使用自定义排序顺序对对象的ArrayList进行排序
问题 我希望为我的地址簿应用程序实现一个排序功能. 我想排序anArrayList contactArray.Contact是一个包含四个字段的类:名称,家庭电话号码,手机号码和地址.我想排序name ...
- java排序接口_详解JAVA使用Comparator接口实现自定义排序
1.原则 Comparator接口可以实现自定义排序,实现Comparator接口时,要重写compare方法: int compare(Object o1, Object o2) 返回一个基本类型的 ...
- Java Arraylist 如何使用 Comparator排序
Java Arraylist 如何使用 Comparator排序import java.util.ArrayList; import java.util.Collections; import jav ...
- java list集合自定义排序_Java 通过 Comparator comparing 对 list 自定义 排序
摘要: 在日常开发中,经常会用到排序算法,这里记录下日常使用比较多的排序方法,其中包括按指定指定:正序.倒序排序,还有按自定义字段排序的方法,方便日后查看: 一:按指定字段排序,默认倒序,如下写法: ...
最新文章
- java hibernate configuration 获取_1 Hibernate Configuration 配置
- .Net Core 项目引用本地类库方式(二)
- dns tunnel工具地址
- 汇编cli(Clear Interrupt,禁止中断、关中断,对应的sti是开中断)
- Windows与VMware下的Linux文件共享方式总结
- 获得Google搜索字符串中的关键字
- Linux_unix系统编程手册以同步方式等待信号
- android 图片浏览控件_Android自动化测试23--Appium同步点
- CNN的卷积运算为何使用互相关而不是卷积
- C#中DateTime的缺陷与代替品DateTimeOffset
- 【Python + Selenium】之JS定位总结
- 机器学习面试——逻辑回归和线性回归
- pytorch深度学习-机器视觉-目标检测和边界框简介
- 最大连续1的个数 三 窗口大小固定,逻辑连续但实际上并不连续的滑动窗口
- HTML学习总结(2)——标题/水平线/注释/段落/折行/文本格式化
- 天网防火墙Athena 2006正式发布
- 12个常见idea快捷键
- 洛谷P2122 还教室
- 企业请专职SEO和外包给科技公司做优化,有什么不同?
- 计算机wps文字背景怎么设置,如何在wps文本中添加背景以及如何将图片设置为页面背景...