Назад к вопросам
Senior
5
Чем отличается map от flatMap в Stream API?
Компании, где спрашивали
SSP Soft
Ответ от нейросети
sobes.tech AI
В Stream API Java:
-
mapпреобразует каждый элемент потока в один другой элемент. Результат — поток с таким же количеством элементов. -
flatMapпреобразует каждый элемент в поток (Stream) элементов, а затем "выравнивает" (флэтит) эти потоки в один общий поток. Это удобно, когда из одного элемента нужно получить несколько.
Пример:
List<String> words = List.of("hello", "world");
// map: преобразуем каждое слово в массив букв
List<String[]> mapped = words.stream()
.map(word -> word.split(""))
.collect(Collectors.toList());
// flatMap: преобразуем каждое слово в поток букв и объединяем в один поток
List<String> flatMapped = words.stream()
.flatMap(word -> Arrays.stream(word.split("")))
.collect(Collectors.toList());
System.out.println(mapped.size()); // 2
System.out.println(flatMapped.size()); // количество букв всех слов
Таким образом, flatMap удобен для работы с вложенными структурами и для "расплющивания" потоков.