我想根据当前日期对我的日期列表进行排序,例如列表中有下一项:
10.01.2018,
10.20.2018,
10.14.2018,
10.02.2018
当前日期是 10.08.2018
。
结果应该是按下一个顺序升序排序的数组:
10.14.2018,
10.20.2018 and then
10.01.2018,
10.02.2018.
首先应该是未发生的日期,然后是过去的日期。如何使用比较器?
最佳答案
我发现的最简洁优雅但可读性最强的方式如下:
list.sort(
Comparator
.comparing( LocalDate.now()::isAfter )
.thenComparing( Comparator.naturalOrder() )
);
这读作 首先比较每个日期是否在今天之后进行排序,然后使用 LocalDate
打破平局的自然顺序。 (值得记住的是,对 boolean
值进行排序意味着将 false
放在开头,将 true
放在结尾,即 false < true
)。
关于java - 相对于当前日期对 Java 集合进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52704880/