java - 使用 Java8 流过滤列表并获取第一个元素
问题描述
collectorConfiguration = Optional.ofNullable(recapPlacement.getPnetCode())
.map(pnetCode -> Optional.ofNullable(collectorConfigurations.stream()
.filter(c -> pnetCode.equals(c.getPnetCode()))
.collect(Collectors.toList())
.stream().filter(Objects::nonNull).findFirst())
.orElse(unknownExternalCollector))
.orElse(unknownExternalCollector);
在上面的代码中
unknownExternalCollector
1)如果 pnetCode 为空,我想返回或
2)我想collectorConfigurations
使用 pnetCode 迭代并找到至少一条记录,如果列表中没有与 pnetCode 匹配的元素,那么我想要 return unknownExternalCollector
。我收到编译错误说
orElse
(java.util.Optional<com.capitalone.omega.collectorservice.domain.CollectorConfiguration>)
in Optional cannot be applied om.capitalone.omega.collectorservice.domain.CollectorConfiguration
解决方案
您可以将其简化如下(无需收集然后流和调用findFirst
。您可以flatMap
在此处使用)
collectorConfiguration = Optional.ofNullable(recapPlacement.getPnetCode())
.flatMap(pnetCode -> collectorConfigurations.stream()
.filter(c -> pnetCode.equals(c.getPnetCode()))
.filter(Objects::nonNull)
.findFirst())
.orElse(unknownExternalCollector);
推荐阅读
- flutter - Flutter 如何在类中使用 setState 或其他东西
- reactjs - 如何在 react-native 中呈现 Html 并更改数据?
- javascript - 通过迭代数组链接承诺
- azure-devops - 如何在 azure devops 上使用触发管道信息标记触发管道
- java - 在两个 if 语句中使用 Java 中的变量
- database - Laravel 8.1 如何制作用户表的播种机
- unit-testing - ErrorException:试图获取非对象的属性“id”--Laravel 单元测试
- python - 从另一个索引和值列表替换列表列表中的多个项目
- reactjs - 带有 Github Actions 的 env 文件
- graphviz - Cytoscape 不从我的点文件加载节点和边缘属性