Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用流的列表的最小非空LocalDateTime_Java_Java 8_Java Stream - Fatal编程技术网

Java 使用流的列表的最小非空LocalDateTime

Java 使用流的列表的最小非空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

由于以下原因,我知道如何获取列表的min
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
    创建一个新的比较器。在我的情况下,将不会出现一个空列表-因为在手动简单有效之前进行了检查。