首页 > 解决方案 > 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中的任务列表

标签: java-8java-stream

解决方案


使用flatMap

List<Task> taskList = projectMap.stream()
                                .flatMap(p -> p.getProject().getTasks().stream())
                                .collect(Collector.toList());

推荐阅读