空安全日期比较器,用于在Java 8 Stream中进行排序
我正在用它来获取最新的物品。我如何才能做到这一点是null安全的,最后(最旧)的日期排序为null。createDt是一个joda LocalDate对象。
Optional<Item> latestItem = items.stream() .sorted((e1, e2) -> e2.getCreateDt().compareTo(e1.getCreateDt()))
.findFirst();
回答:
如果Item
可能为,则使用@rgettman的解决方案。
如果LocalDate
可能为null,则使用以下代码:
items.stream() .sorted(Comparator.comparing(Item::getCreateDt, Comparator.nullsLast(Comparator.reverseOrder())));
在任何一种情况下,请注意,sorted().findFirst()
由于大多数标准实现会首先对整个流进行排序,因此效率可能很低。您应该改用Stream.min。
以上是 空安全日期比较器,用于在Java 8 Stream中进行排序 的全部内容, 来源链接: utcz.com/qa/411442.html