Назад к вопросам
Т-Банк
Junior — Middle
65
Каковы отличия между методами map и flatMap при работе со стримами в Java Stream API?
Компании, где спрашивали
СБЕР Бизнес
Prooftech
Surf
EAGAR
IBS
Ответ от нейросети
sobes.tech AI
Методы map и flatMap в Java Stream API служат для преобразования элементов стрима, но работают по-разному:
-
map применяет функцию к каждому элементу и возвращает стрим из результатов. Если функция возвращает один элемент, то результат — стрим из этих элементов.
-
flatMap применяет функцию, которая возвращает стрим для каждого элемента, а затем "расплющивает" (флэтит) все эти стримы в один общий стрим.
Пример:
List<String> words = Arrays.asList("hello", "world");
// map: преобразуем каждое слово в массив символов и получаем стрим массивов
Stream<char[]> mapped = words.stream()
.map(word -> word.toCharArray());
// flatMap: преобразуем каждое слово в стрим символов и объединяем в один стрим символов
Stream<Character> flatMapped = words.stream()
.flatMap(word -> word.chars().mapToObj(c -> (char)c));
// Вывод flatMap
flatMapped.forEach(System.out::println);
Итого:
map— 1 к 1 преобразование элементов.flatMap— 1 к многим, с объединением вложенных стримов в один.