Мне было интересно, есть ли предпочтительный способ перехода из потока списков в коллекцию, содержащую элементы всех списков в потоке. Я могу думать о двух способах добраться:
final Stream<List<Integer>> stream = Stream.empty();
final List<Integer> one = stream.collect(ArrayList::new, ArrayList::addAll, ArrayList::addAll);
final List<Integer> two = stream.flatMap(List::stream).collect(Collectors.toList());
Второй вариант выглядит намного приятнее для меня, но я думаю, что первый из них более эффективен в параллельных потоках. Существуют ли дополнительные аргументы для одного из двух методов или против этого?