Joy*_*Joy 3 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()));
Run Code Online (Sandbox Code Playgroud)
我想得到
List<POList>
Run Code Online (Sandbox Code Playgroud)
从这个右手表达。无法理解如何将此流流转换为列表。
使用flatMap,将a转换Stream<Stream<POLine>>为a 并不容易Stream<POLine>:
List<POLine> output =
list.flatMap(Function.identity())
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
尽管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());
Run Code Online (Sandbox Code Playgroud)