我想根据两天之间的日期字段对列表进行排序,比如从现在到接下来的三天。排序列表应从现在开始和接下来的 3 天按升序排列,之后的所有先前和未来日期按升序排列。
e.g.:
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(空日期始终位于顶部)
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);
};