Как собрать несколько списков в один список с помощью java-потоков?

Как я могу собрать несколько значений List в один список, используя java-streams?

List<MyListService> services;

services.stream().XXX.collect(Collectors.toList());


interface MyListService {
   List<MyObject> getObjects();
}

Поскольку у меня есть полный контроль над интерфейсом: или я должен изменить метод, чтобы возвращать Array вместо List?

Ответ 1

Вы можете собирать списки, содержащиеся в MyListService случаях с flatMap:

List<MyObject> list = services.stream()
                              .flatMap(s -> s.getObjects().stream())
                              .collect(Collectors.toList());