Sobes.tech
Junior — Middle
61

Какая основная разница между использованием методов map и flatMap в Stream API при обработке потоков данных?

Компании, где спрашивали
СБЕРСБЕР
Y_lab development
ИннотехИннотех
IT OneIT One

Ответ от нейросети

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 удобен, когда каждый элемент исходного потока соответствует нескольким элементам в результирующем потоке, и нужно получить единый поток этих элементов.