Java 8:将List <List <List <Product >>合并到一个列表中

时间:2019-12-22 14:38:54

标签: java java-8 java-stream

我有3个列表,List<List<List<Product>>我想拼凑成一个。我已经阅读了几篇SO文章,但是我仍然不确定如何进行。到目前为止,我有

allProducts.stream()
    .flatMap(List::Stream)
    .collect(Collectors.toList());

但这仅合并两个列表,对吗?在该语句中合并所有三个的最佳方法是什么?我已经看过reduce()的用法,但不确定如何编写。我需要进入Product的单个列表。

1 个答案:

答案 0 :(得分:9)

您需要链接2个flatMap

allProducts.stream() // Stream<List<List<Product>>>
           .flatMap(List::stream) // Stream<List<Product>>
           .flatMap(List::stream) // Stream<Product>
           .collect(Collectors.toList()); // List<Product>