Java 如果空流为空,则为NullPointerException
我需要从设置代码中定义最大分钟数Java 如果空流为空,则为NullPointerException,java,java-stream,optional,Java,Java Stream,Optional,我需要从设置代码中定义最大分钟数 carWashBoxSet. stream(). filter(p -> p.getOrderTime() != null). map(t -> t.getOrderTime()). max(Date::compareTo). get(). getMinute
carWashBoxSet.
stream().
filter(p -> p.getOrderTime() != null).
map(t -> t.getOrderTime()).
max(Date::compareTo).
get().
getMinutes();
问题是,如果carWashBoxSet为空,我将获得空指针验证,是否可以使用smth,如
stream.ifNonEpty().Orelse()
?我强烈建议不要使用.get()
而不使用.isPresent()
,因为当可选项为空时,您将创建一个NoTouchElementException
为了绕过这个问题,我将在末尾映射getMinutes()
,并根据您的期望添加一个.orElse()
或.orElseGet()
carWashBoxSet.stream()
.filter(p -> p.getOrderTime() != null)
.map(t -> t.getOrderTime())
.max(Date::compareTo)
.map(boxSet -> boxSet.getMinutes())
.orElse(/*another value*/);
如果您不希望有其他选择,只想以某种方式处理此值,而不需要进一步使用。ifPresent()
也是一个不错的选择
carWashBoxSet.stream()
.filter(p -> p.getOrderTime() != null)
.map(t -> t.getOrderTime())
.max(Date::compareTo)
.map(boxSet -> boxSet.getMinutes())
.ifPresent( minutes -> System.out.println(minutes));
我强烈建议不要在没有
.isPresent()
的情况下使用.get()
,因为当可选项为空时,您将创建一个NoTouchElementException
为了绕过这个问题,我将在末尾映射getMinutes()
,并根据您的期望添加一个.orElse()
或.orElseGet()
carWashBoxSet.stream()
.filter(p -> p.getOrderTime() != null)
.map(t -> t.getOrderTime())
.max(Date::compareTo)
.map(boxSet -> boxSet.getMinutes())
.orElse(/*another value*/);
如果您不希望有其他选择,只想以某种方式处理此值,而不需要进一步使用。ifPresent()
也是一个不错的选择
carWashBoxSet.stream()
.filter(p -> p.getOrderTime() != null)
.map(t -> t.getOrderTime())
.max(Date::compareTo)
.map(boxSet -> boxSet.getMinutes())
.ifPresent( minutes -> System.out.println(minutes));
可以肯定的是:如果carWashBoxSet为null或为空,您会得到一个NPE?为什么不先检查null呢?或者可选。如果不使用(carWashBoxSet),则应避免使用过时的
Date
类,并且应明确避免使用其不推荐的getMinutes
方法。不推荐使用,因为它不可靠。从上下文看不清楚,但可能ZonedDateTime
,Instant
甚至LocalTime
或LocalDateTime
都是更好的选择。可以肯定的是:如果carWashBoxSet为null或为空,您会得到NPE?为什么不先检查null?或者可选。如果不使用(carWashBoxSet),则应避免使用过时的Date
类,并且应明确避免使用其不推荐的getMinutes
方法。不推荐使用,因为它不可靠。从上下文来看还不清楚,但可能ZonedDateTime
,Instant
甚至LocalTime
或LocalDateTime
可能是更好的选择。