Java 使用流的列表的最小非空LocalDateTime
由于以下原因,我知道如何获取列表的minJava 使用流的列表的最小非空LocalDateTime,java,java-8,java-stream,Java,Java 8,Java Stream,由于以下原因,我知道如何获取列表的minLocalDateTime: e、 g.LocalDateTime minLdt=list.stream().map(u->u.getMyLocalDateTime()).min(LocalDateTime::compareTo).get() 但我的问题有点不同 我希望最小值LocalDateTime不是null 或者null如果它们都是null 我该如何用一种简洁的方式来做呢?也许是这样的吧 LocalDateTime minDate = list.st
LocalDateTime
:
e、 g.LocalDateTime minLdt=list.stream().map(u->u.getMyLocalDateTime()).min(LocalDateTime::compareTo).get()代码>
但我的问题有点不同
我希望最小值LocalDateTime
不是null
或者null
如果它们都是null
我该如何用一种简洁的方式来做呢?也许是这样的吧
LocalDateTime minDate = list.stream()
.filter(Objects::nonNull)
.map(u -> u.date)
.min(LocalDateTime::compareTo)
.orElse(null);
你可以简单地做:
Optional<LocalDateTime> op = list.stream()
.filter(Objects::nonNull)
.min(Comparator.naturalOrder());
可选op=list.stream()
.filter(对象::非空)
.min(Comparator.naturalOrder());
缺席
值表示列表中只有空值(或者列表是空的)啊,我想我可以使用可选
为空表示空
@HubertGrzeskowiak可能orElse(null)
而不是获取
,由于OP需要一个null
,当列表中的所有元素都为null时只是一个旁注,当元素类型实现Comparable
时,最好使用现有的比较器
而不是通过ComparableType::compareTo
创建一个新的比较器。在我的情况下,将不会出现一个空列表-因为在手动简单有效之前进行了检查。