存在Java 8 lambda表达式

存在Java 8 lambda表达式,java,lambda,Java,Lambda,首先,我需要检查数据是否存在于列表中,然后在Java8流上获取else set default或空值 目前我正在使用下面的代码,但没有isPresent,但我不知道如何在java8中使用isPresent 我正在尝试下面不完美的东西: String isScheme = (this.mapProgramApproaches.stream().findFirst().isPresent())? this.mapProgramApproaches.stream().findFirst().get()

首先,我需要检查数据是否存在于列表中,然后在Java8流上获取else set default或空值

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

我正在尝试下面不完美的东西:

String isScheme = (this.mapProgramApproaches.stream().findFirst().isPresent())? this.mapProgramApproaches.stream().findFirst().get().getIsScheme().toString() : "0";
MapProgramApproach
时,设置此选项。

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

您可以使用
映射
可选
的值映射到所需的
字符串
,然后 当
可选值不存在时,使用
orElse()
返回默认值:

String isScheme = this.mapProgramApproaches.stream()
                                           .findFirst()
                                           .map(o->o.getIsScheme().toString())
                                           .orElse("0");

也许你正在寻找这样的东西:

String isScheme = this.mapProgramApproaches.stream()
        .findFirst()
        .map(p -> p.getIsScheme().toString())
        .orElse("0");
List<String> mapProgramApproaches = new ArrayList<>();
mapProgramApproaches.stream()
                .filter(this::isScheme)
                .findFirst()
                .ifPresent(this::doYourCode)
                .orElse(defaultValue);

我不确定您这样做的上下文,但我想您应该检查某个对象是否是scheme,然后用它做一些事情。在这种情况下,我建议如下实施:

String isScheme = this.mapProgramApproaches.stream()
        .findFirst()
        .map(p -> p.getIsScheme().toString())
        .orElse("0");
List<String> mapProgramApproaches = new ArrayList<>();
mapProgramApproaches.stream()
                .filter(this::isScheme)
                .findFirst()
                .ifPresent(this::doYourCode)
                .orElse(defaultValue);
List MapProgramApproach=new ArrayList();
MapProgramApproach.stream()
.filter(此::isScheme)
.findFirst()
.ifPresent(此::doYourCode)
.orElse(默认值);
这将使你的代码更干净。并将有助于避免附加条件