JAVA Как добавить возвращаемое значение .map () в список вместо возврата списка - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть java код, похожий на

/*Statement A*/
dataList.stream.map(ClassA::mapFunction).collect(Collectors.toList())

Уловка mapFunction имеет следующее определение:

List<Entry> mapFunction(DataListItem dataListItem)

, поэтому приведенный выше вызов stream (). Map () возвращает List<List<Entry>>

Я хочу, чтобы возвращаемое значение было list<Entry> (в основном добавляя все возвращаемые значения), и для этого я сейчас делаю:

final List<Entry> entryList = new ArrayList<>();
dataList.stream.map(dataListItem -> entryList.addAll(ClassA.mapFunction(dataListItem))
                                   .collect(Collectors.toList());

Есть ли простой способ добавить возвращаемые значения mapFunction, чтобы результат оператора A был просто List<Entry> вместо List<List<Entry>>.

1 Ответ

1 голос
/ 28 апреля 2020

Операция flatMap, которую вы делаете с потоками так же, как map, filter, collect и т. Д. c, и выполняет следующие действия:

Вы предоставляете лямбда, которая превращает каждый элемент в потоке в сам поток (то есть в поток потоков), а затем «вывод» операции представляет собой один поток, состоящий из всех этих потоков, соединенных вместе.

...