【发布时间】:2021-10-12 10:30:53
【问题描述】:
我想根据两天之间的日期字段对列表进行排序,比如从现在到接下来的 3 天。排序后的列表应按升序排列从现在起的天数和接下来的 3 天,之后按升序排列所有以前和未来的日期。
例如:
List<LocalDate> list = Arrays.asList(
LocalDate.of(2021, 8, 1),
LocalDate.of(2021, 8, 2),
LocalDate.of(2021, 8, 3),
LocalDate.of(2021, 8, 8),
LocalDate.of(2021, 8, 9),
LocalDate.of(2021, 8, 10),
LocalDate.of(2021, 8, 11),
LocalDate.of(2021, 8, 12),
LocalDate.of(2021, 8, 13),
LocalDate.of(2021, 8, 14),
LocalDate.of(2021, 8, 15),
null);`
假设今天是 2021 年 8 月 8 日 输出将是:
null(null 日期始终位于顶部)
2021 年 8 月 8 日
2021 年 8 月 9 日
2021 年 8 月 10 日(接下来 3 天到此处按升序排列)
2021 年 8 月 8 日(从这里开始,所有过去和未来的日期都按升序排列)
2021 年 8 月 1 日
2021 年 8 月 2 日
2021 年 8 月 3 日
2021 年 8 月 11 日
2021 年 8 月 12 日
2021 年 8 月 13 日
2021 年 8 月 14 日
2021 年 8 月 15 日
Comparator<LocalDate> comp = (o1, o2) -> {
if (o1.isBefore(now) && o2.isBefore(now) || o1.isAfter(now.plusDays(3)) && o2.isAfter(now.plusDays(3))) {
return o1.compareTo(o2);
}
return o2.compareTo(o1);
};
【问题讨论】:
-
示例输出是否有意重复日期
8-Aug-2021,在示例输入中仅出现一次?
标签: java sorting collections java-8 localdate