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

use*_*256 1 java java-8 java-stream

我有 3 个列表,List<List<List<Product>>我想将它们合并为一个。我已经阅读了几篇 SO 文章,但我仍然不确定如何继续。到目前为止我有

allProducts.stream()
    .flatMap(List::Stream)
    .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

但这只会合并两个列表,对吗?在该语句中合并所有三个的最佳方法是什么?我见过reduce()用过,但我不知道怎么写。我需要获得Product.

Era*_*ran 9

您需要链接 2flatMap秒:

allProducts.stream() // Stream<List<List<Product>>>
           .flatMap(List::stream) // Stream<List<Product>>
           .flatMap(List::stream) // Stream<Product>
           .collect(Collectors.toList()); // List<Product>
Run Code Online (Sandbox Code Playgroud)