java-8 - Java8流 - 当.map()找到一个集合时如何将集合转换为列表
问题描述
我想将结果转换为 List 以获取以下代码:
List<Task> taskList = projectMap.stream().map(p -> p.getProject().getTasks()).collect(Collector.toList());
但问题是p.getProject().getTasks()实际上是一个Set,所以我收到了这个错误
Type mismatch: cannot convert from List<Set<Task>> to List<Task>
所以我也尝试将结果作为Set返回
Set<Task> taskList = (Set<Task>)projectMap.stream().map(p -> p.getProject().getTasks());
错误
java.util.stream.ReferencePipeline$3 cannot be cast to java.util.Set
无论如何将结果转换为 List ?
或将结果保持为 Set 也很好,我的目标是获取位于ProjectMap > Project > Task中的任务列表
解决方案
使用flatMap
:
List<Task> taskList = projectMap.stream()
.flatMap(p -> p.getProject().getTasks().stream())
.collect(Collector.toList());
推荐阅读
- r - 如何修复 dplyr 包中的汇总函数错误?
- flutter - Dart-lang,我如何映射列表
列出 结合元素? - tensorflow - KubeFlow 上的 TFServing 和 KFServing 有什么不同
- node.js - 当流量通过 Cloudflare 路由时,WebSocket 连接从未完全建立
- django - 如何在 Django 中加载引导程序?
- python - read_csv 读取值包含在另一个数据框的列中的行
- python - 如何在 Python 中获得负十进制数的十进制平方根?
- java - QueryString 用冒号搜索字符串
- javascript - 计数和比较
- python - 未找到 webdrivermanager pip3