空安全日期比较器,用于在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

回到顶部