Junior — Middle
Quelle est la principale différence entre l'utilisation des méthodes map et flatMap dans l'API Stream lors du traitement des flux de données?
sobes.tech IA
Réponse de l'IA
Основное различие между методами map и flatMap в Stream API заключается в том, что:
mapпреобразует каждый элемент потока в другой объект, возвращая поток этих объектов.flatMapпреобразует каждый элемент в поток (Stream) объектов, а затем "расплющивает" (флэтит) эти потоки в один общий поток.
Пример:
List<List<String>> listOfLists = List.of(
List.of("a", "b"),
List.of("c", "d")
);
// map вернёт Stream<List<String>>
Stream<List<String>> streamOfLists = listOfLists.stream().map(list -> list);
// flatMap вернёт Stream<String>, "расплющивая" вложенные списки
Stream<String> streamOfStrings = listOfLists.stream().flatMap(list -> list.stream());
Таким образом, flatMap удобен, когда каждый элемент исходного потока соответствует нескольким элементам в результирующем потоке, и нужно получить единый поток этих элементов.