Junior — Middle
91
Kādas ir atšķirības starp metodēm map un flatMap, strādājot ar straumēm Java Stream API?
Uzņēmumi, kur jautāja
СБЕР Бизнес
Prooftech
Surf
EAGAR
IBS
Atbilde no AI
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 к многим, с объединением вложенных стримов в один.