Java 8 parallelstream将返回列表收集到一个列表而不是列表列表中

KIC*_*KIC 1 java lambda java-8

我想从并行流中将列表结果收集到一个列表中.让我们看看这段代码来更好地解释我的问题.这就是我得到的:

List<Object> a = new ArrayList<>();

List<List<Object>> result a.parallelStream() // I get a List of List
   .map(a -> { return new ArrayList(); })
   .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

但我真正想拥有的更像是这样的:

List<Object> a = new ArrayList<>();

List<Object> result a.parallelStream()   // I want to add all list elements into one List of objects
   .map(a -> { return new ArrayList(); })
   .collect(Collectors.???); 
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 5

flatMap 可以将内部列表的元素折叠到单个列表中:

List<List<Object>> a = ...
List<Object> result = a.stream()
                       .flatMap (l -> l.stream())
                       .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

  • 我无法抗拒:[`l - > l.stream()`可能只是`List :: stream`](http://stackoverflow.com/questions/25147094/turn-a-list-of-lists-到-A-列表使用-lambda表达式#comment39146485_25147125) (3认同)