Sobes.tech
Back to questions
Junior — Middle
59

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

Companies where asked
Ifellow

Answer from AI

sobes.tech AI

Методы map и flatMap в Stream API служат для преобразования элементов потока, но работают по-разному:

  • map применяет функцию к каждому элементу и возвращает поток преобразованных элементов. Если функция возвращает поток, то результатом будет поток потоков.

  • flatMap применяет функцию, которая возвращает поток для каждого элемента, а затем "расплющивает" (флэтит) эти потоки в один общий поток.

Пример:

List<List<String>> listOfLists = Arrays.asList(
    Arrays.asList("a", "b"),
    Arrays.asList("c", "d")
);

// map вернет Stream<List<String>>
Stream<List<String>> stream1 = listOfLists.stream().map(list -> list);

// flatMap вернет Stream<String>
Stream<String> stream2 = listOfLists.stream().flatMap(list -> list.stream());

stream2.forEach(System.out::println); // Выведет a b c d