相对于当前日期对Java集合进行排序 [英] Sort Java collection relative to the current date
本文介绍了相对于当前日期对Java集合进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想对相对于当前日期的日期列表进行排序,例如,列表中有下一项:
I want to sort my List of Date relative to the current date, e.g we have next items in list:
10.01.2018,
10.20.2018,
10.14.2018,
10.02.2018
,当前日期为10.08.2018
.
结果应按以下顺序升序排列数组:
The result should be ascending sort of array in the next order:
10.14.2018,
10.20.2018 and then
10.01.2018,
10.02.2018.
首先应该是没有发生的日期,然后是过去的日期.如何使用Comparator?
First should be dates that didn't happen and then the past dates. How to do it with Comparator?
推荐答案
您可以看到这种方式
- 如果您要比较的两个日期在今天的同一侧(之前或之后),请正常进行比较
- 如果您之前需要一个,之后需要一个来取消订单
这将保留ascending order
,但将将来的日期放在过去的日期之前
This will keep ascending order
but put future dates before past dates
public static void main(String[] args) {
List<LocalDate> list = Arrays.asList(
LocalDate.of(2018, 10, 1), LocalDate.of(2018, 10, 20),
LocalDate.of(2018, 10, 14),LocalDate.of(2018, 10, 2));
System.out.println(list);
LocalDate now = LocalDate.now();
list.sort((o1, o2) -> {
if (o1.isBefore(now) && o2.isBefore(now) || o1.isAfter(now) && o2.isAfter(now)) {
return o1.compareTo(o2);
}
return o2.compareTo(o1);
});
System.out.println(list);
}
[2018-10-01, 2018-10-20, 2018-10-14, 2018-10-02]
[2018-10-14, 2018-10-20, 2018-10-01, 2018-10-02]
这篇关于相对于当前日期对Java集合进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文