我需要定义设置代码的最大分钟数
carWashBoxSet.
stream().
filter(p -> p.getOrderTime() != null).
map(t -> t.getOrderTime()).
max(Date::compareTo).
get().
getMinutes();
问题是,如果 carWashBoxSet 为空,我会得到空指针异常,是否可以使用像 stream.ifNonEpty().Orelse()
这样的东西?
最佳答案
我强烈建议不要在没有.isPresent()
的情况下使用.get()
,因为当可选值为空时,您将创建一个NoSuchElementException。
要绕过这个问题,我将在末尾映射 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));
关于java - 如果空流为空,则出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44545539/