首先,我需要检查列表中是否存在数据,然后在Java 8流上设置其他默认值或空值。
目前我在没有isPresent
的情况下使用下面的代码,但我不知道如何在java8中使用isPresent。
我正在尝试下面不完美的事情:
String isScheme = (this.mapProgramApproaches.stream().findFirst().isPresent())? this.mapProgramApproaches.stream().findFirst().get().getIsScheme().toString() : "0";
设置mapProgramApproaches
的位置。
答案 0 :(得分:6)
不要使用isPresent()
(两次运行Stream
管道没有意义。)
您可以使用map
将Optional
的值映射到所需的String
,然后
当orElse()
值不存在时,使用Optional
返回默认值:
String isScheme = this.mapProgramApproaches.stream()
.findFirst()
.map(o->o.getIsScheme().toString())
.orElse("0");
答案 1 :(得分:4)
也许你正在寻找这样的东西:
String isScheme = this.mapProgramApproaches.stream()
.findFirst()
.map(p -> p.getIsScheme().toString())
.orElse("0");
答案 2 :(得分:1)
我不确定你在做这个的上下文,但我想你想检查一些对象是否是方案,然后用它做一些事情。在这种情况下,我建议像这样实现它:
List<String> mapProgramApproaches = new ArrayList<>();
mapProgramApproaches.stream()
.filter(this::isScheme)
.findFirst()
.ifPresent(this::doYourCode)
.orElse(defaultValue);
它会使您的代码更清晰。并将有助于避免其他条件!