Android list按照时间排序的问题
来源:互联网 发布:c语言什么时候用void 编辑:程序博客网 时间:2024/06/05 20:25
刚开始按照这种写法,对list进行时间排序:
private void sortByTimeRepoList(List<ReposInfo> itemInfoList, final int which) {
Collections.sort(itemInfoList, new Comparator<ReposInfo>() {
@Override
public int compare(ReposInfo item1, ReposInfo item2) {
Date date1 = stringToDate(Miscellaneous.longToDate(item1.getMtime() * 1000));
Date date2 = stringToDate(Miscellaneous.longToDate(item2.getMtime() * 1000));
// 对日期字段进行升序,如果欲降序可采用after方法
if (which == mainActivity.SORT_ORDER_DESCENDING ? date1.before(date2) : date1.after(date2)) {//before是指时间从最新时间下降到之前
return 1;
}
return -1;
}
}
);
}
这种写法的时间排序刚开始没问题(因为开始测试的数据时间都不相同),后来发现,有item的时间相同时,会报错:
java.lang.IllegalArgumentException: Comparison method violates its general contract !
百度一番之后,大多数人都说是没有考虑 date1 == date2 这种情况,后来在stackoverflow上看到有个大神的提示:
https://stackoverflow.com/questions/10234038/compare-method-throw-exception-comparison-method-violates-its-general-contract
把代码改了一番:
private void sortByTimeRepoList(List<ReposInfo> itemInfoList, final int which) {
Collections.sort(itemInfoList, new Comparator<ReposInfo>() {
@Override
public int compare(ReposInfo item1, ReposInfo item2) {
Date date1 = stringToDate(Miscellaneous.longToDate(item1.getMtime() * 1000));
Date date2 = stringToDate(Miscellaneous.longToDate(item2.getMtime() * 1000));
return which == mainActivity.SORT_ORDER_DESCENDING ? date2.compareTo(date1) : date1.compareTo(date2);
}
}
);
}
再去测试,就OK了!
代码里的
which == mainActivity.SORT_ORDER_DESCENDING
这一句代表的是升序或者降序,前面的date2.compareTo(date1)代表降序,后面的则是升序。
- Android list按照时间排序的问题
- Android 列表按照时间排序
- Android对数据按照时间排序
- android对数据按照时间排序
- 按照list中对象的属性排序
- list按照时间排列
- List中对象按照属性时间升序排序
- List<Map<String,Object>>按照子元素中的时间排序
- List按照date排序
- 按照优先级排序List
- List<Object>集合按照Object的某个字段排序,解决取不到父类字段问题
- 按照时间排序
- List排序问题:根据list对象的创建时间排序,后用lambda表达式
- List按照指定字段排序
- java android中对list的时间进行排序
- android 按照字母的顺序排序
- 对含有bean的list按照汉字排序
- python 按照list中的dic的某key排序
- MultiValueMap的序列化以及反序列化
- spark架构
- 【编程初学者】创建自己的开源项目5-在主分支上创建新分支(myeclipse+git)
- 基于Hadoop的好友推荐系统项目综述
- 专注服务,而非容器
- Android list按照时间排序的问题
- opencv中头文件详解
- Android按需打包多种ABI(cpu)架构的so文件库
- TCP报文段中的URG和PSH
- echarts:Uncaught TypeError: Cannot read property '0' of undefined 问题根源所在
- 关于angular中内置指令的介绍
- 纯干货,Spring-data-jpa详解,全方位介绍。
- linux之用route命令看简单路由信息
- 理解一下回调函数Callback Function