使用流的列表的min非null LocalDateTime

yco*_*omp 4 java java-8 java-stream

我知道如何获得LocalDateTime列表的最小值归功于:https://stackoverflow.com/a/20996009/270143

例如 LocalDateTime minLdt = list.stream().map(u -> u.getMyLocalDateTime()).min(LocalDateTime::compareTo).get();

我的问题虽然有点不同......

  1. 我想最小LocalDateTime的不是null
  2. 或者null如果他们都是null

我将如何以简洁的方式做到这一点?

Eug*_*ene 7

你可以这样做:

Optional<LocalDateTime> op = list.stream()
        .filter(Objects::nonNull)
        .min(Comparator.naturalOrder());
Run Code Online (Sandbox Code Playgroud)

并且该absent值表示列表中只有空值(或者列表为空)