我需要从设置我的代码
定义最大分钟数 carWashBoxSet.
stream().
filter(p -> p.getOrderTime() != null).
map(t -> t.getOrderTime()).
max(Date::compareTo).
get().
getMinutes();
问题是如果carWashBoxSet为空我得到空指针exeption,是否可以像stream.ifNonEpty().Orelse()
那样使用smth?
答案 0 :(得分:3)
我强烈建议不使用.get()
而不使用.isPresent()
,因为当optional为空时,您将创建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));