Параллельный поток Java 8 собирает список возврата в один список вместо списка [дубликата]

1

Я хочу собрать результат списка из параллельного потока в один список. Давайте посмотрим на этот код, чтобы лучше объяснить мою проблему. Это то, что я получаю:

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());

Но то, что я действительно хочу, больше похоже на это:

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.???); 
Теги:
java-8
lambda

1 ответ

5
Лучший ответ

flatMap может свернуть элементы внутренних списков в один список:

List<List<Object>> a = ...
List<Object> result = a.stream()
                       .flatMap (l -> l.stream())
                       .collect(Collectors.toList());

Ещё вопросы

Сообщество Overcoder
Наверх
Меню