Junior — Middle
87
Was sind die Unterschiede zwischen den Methoden map und flatMap bei der Arbeit mit Streams in der Java Stream API?
Unternehmen wurden gefragt
СБЕР Бизнес
Prooftech
Surf
EAGAR
IBS
Antwort von AI
sobes.tech KI
Методы 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 к многим, с объединением вложенных стримов в один.