将流列表转换为列表

Posted

技术标签:

【中文标题】将流列表转换为列表【英文标题】:Convert List of Stream to List 【发布时间】:2019-10-21 05:58:29 【问题描述】:

我有一个 lambda 表达式,我想在其中创建一个对象列表,但出现错误

List<ClassObject> classObject = obj1.getFileId().stream()
                .map(x -> obj1.getCustomObj().stream()
                        .map(y -> obj1.builder().Id(x).name(y.getName()).value(y.getValue())
                                .details(obj1.getDetails()).build()))
                .collect(Collectors.toList());

错误

Type mismatch: cannot convert from List<Stream<ClassObject>> to List<ClassObject>

我希望 List&lt;ClassObject&gt; 作为 lambda 表达式的返回类型。我怎样才能做到这一点?

【问题讨论】:

***.com/questions/14830313/… 的可能重复项? 不,这不是一个好的副本。答案是 flatmap() 而不是 map。 【参考方案1】:

使用平面地图:

List<ClassObject> classObject = obj1.getFileId().stream()
            .flatMap(x -> obj1.getCustomObj().stream()
                    .map(y -> obj1.builder().Id(x).name(y.getName()).value(y.getValue())
                            .details(obj1.getDetails()).build()))
            .collect(Collectors.toList());

【讨论】:

以上是关于将流列表转换为列表的主要内容,如果未能解决你的问题,请参考以下文章

如何将流结果转换为字符串

如何将流大小转换为其他或如何将流大小值传递给向量?

将流转换为小批量以加载到 bigquery

如何从单个 JSON(IOT HUB)将流分析输出转换为多行

Java 8 Collectors to Map

Python:将字符串转换为列表/从列表转换