存在Java 8 lambda表达式

时间:2017-05-04 11:49:24

标签: java lambda

首先,我需要检查列表中是否存在数据,然后在Java 8流上设置其他默认值或空值。

目前我在没有isPresent的情况下使用下面的代码,但我不知道如何在java8中使用isPresent。

我正在尝试下面不完美的事情:

String isScheme = (this.mapProgramApproaches.stream().findFirst().isPresent())? this.mapProgramApproaches.stream().findFirst().get().getIsScheme().toString() : "0";

设置mapProgramApproaches的位置。

3 个答案:

答案 0 :(得分:6)

不要使用isPresent()(两次运行Stream管道没有意义。)

您可以使用mapOptional的值映射到所需的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);

它会使您的代码更清晰。并将有助于避免其他条件!