作者:歪歪Doris | 来源:互联网 | 2022-12-02 18:40
我想对相对于当前日期的日期列表进行排序,例如我们在列表中有下一个项目:
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.
首先应该是没有发生的日期,然后是过去的日期.怎么用比较器做?
1> Federico Per..:
我发现最简洁,优雅,可读的方式如下:
list.sort(
Comparator
.comparing( LocalDate.now()::isAfter )
.thenComparing( Comparator.naturalOrder() )
);
这通过首先比较每个日期是否在今天之后,然后使用LocalDate
自然顺序打破关系来读取排序.(值得记住的是,排序boolean
值意味着将false
s放在开头,将true
s放在最后,即false ).
再次,这必须是公认的答案
那个`Comparator.comparing(LocalDate.now():: isAfter)`有点棘手,但是一旦理解了它就非常讨人喜欢.这是因为缺少`comparisonBoolean`.我会记得,但如果我在自己的代码中使用它,可能会插入解释注释.感谢您在答案中彻底解释.