Junior — Middle
61
Какая основная разница между использованием методов map и flatMap в Stream API при обработке потоков данных?
Компании, где спрашивали
Y_lab development
Ответ от нейросети
sobes.tech AI
Основное различие между методами map и flatMap в Stream API заключается в том, что:
mapпреобразует каждый элемент потока в другой объект, возвращая поток этих объектов.flatMapпреобразует каждый элемент в поток (Stream) объектов, а затем "расплющивает" (флэтит) эти потоки в один общий поток.
Пример:
List<List<String>> listOfLists = List.of(
List.of("a", "b"),
List.of("c", "d")
);
// map вернёт Stream<List<String>>
Stream<List<String>> streamOfLists = listOfLists.stream().map(list -> list);
// flatMap вернёт Stream<String>, "расплющивая" вложенные списки
Stream<String> streamOfStrings = listOfLists.stream().flatMap(list -> list.stream());
Таким образом, flatMap удобен, когда каждый элемент исходного потока соответствует нескольким элементам в результирующем потоке, и нужно получить единый поток этих элементов.