首页 > 解决方案 > java 8: 使用 Optional 和 lambda

问题描述

如何使用 Optional 和 lambda 编写以下逻辑? 我有两个列表

列出成功 = new ArrayList<>();
列表失败 = new ArrayList<>();

还有一个对象

房间类型值

value.getErrorType()可以为 NULL 或不为 NULL 并返回value.getId()整数。

我想根据为空来更新和success列表。failurevalue.getId()value.getErrorType()

就像是:

if(value.getErrorType().equals(NULL)){
   success.add(value.getId())
}
else{
   failure.add(value.getId())
}

标签: if-statementlambdajava-8functional-programmingoptional

解决方案


假设,NULL实际上意味着null,你可以使用

Optional.ofNullable(value.getErrorType())
        .map(x -> failure).orElse(success).add(value.getId());

虽然不建议在Optional这种情况下使用,因为类似的普通检查是直截了当的:

(value.getErrorType() == null? success: failure).add(value.getId());

推荐阅读