java - 将 Stream<Stream<T>> 转换为 List<T>

标签 java lambda java-8 java-stream

我是 java 8 的新手。我编写了以下代码:

Stream<Stream<POLine>> list = poSearchResponseList.stream().map(poSearchResponse ->
        poSearchResponse.getDeliveryDocumentLines().stream().map(deliveryDocumentLine ->
                POLine.builder()
                        .poLineNumber(deliveryDocumentLine.getPurchaseReferenceLineNumber())
                        .quantity(deliveryDocumentLine.getExpectedQty())
                        .vnpkQty(deliveryDocumentLine.getVnpkQty())
                        .build()));

我想得到

List<POList>

来自这个右 watch 达式。无法理解如何将此 Stream of stream 转换为列表。

最佳答案

使用 flatMap , 转换 Stream<Stream<POLine>> 很简单到 Stream<POLine> :

List<POLine> output = 
    list.flatMap(Function.identity())
        .collect(Collectors.toList());

尽管生成 List<POLine> 可能更简单直接:

List<POLine> list = 
    poSearchResponseList.stream()
                        .flatMap(posr -> posr.getDeliveryDocumentLines()
                                             .stream()
                                             .map(dl -> 
                                                 POLine.builder()
                                                       .poLineNumber(dl.getPurchaseReferenceLineNumber())
                                                       .quantity(deliveryDocumentLine.getExpectedQty())
                                                       .vnpkQty(deliveryDocumentLine.getVnpkQty())
                                                       .build()))
                        .collect(Collectors.toList());

关于java - 将 Stream<Stream<T>> 转换为 List<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56522374/

相关文章:

java - 无法使用 aSmack 和 Openfire 保存 VCard

java - Firebase 云消息传递 : random delay between sending and reception of message?

java - 如何正确确定一个对象是 lambda?

c# - 将 lambda 表达式附加到 C# 程序的 main 方法会产生什么结果?

java - 将 System.out.format 翻译成 Clojure

java - 在 Java 中使用反射设置枚举字段

c# - 将参数从 lambda 函数更改为 lambda 表达式

java - Lambda 表达式将对象从一个列表添加到另一种类型的列表

Java 8 时间 API : how to parse string of format "MM.yyyy" to LocalDate

java - 使用流从现有列表创建不可变列表