Junior — Middle
Можете ли да обясните какво е методът flatMap и как се различава от map?
sobes.tech AI
Отговор от AI
Методът map се прилага към колекция и преобразува всеки елемент, връщайки нова колекция с елементи, съответстващи на резултатите от функцията.
flatMap първо прилага функция, която връща колекция (или поток) за всеки елемент, и след това "изглажда" (flatten) всички тези колекции в един общ поток или списък.
Пример на Java с потоци:
List<List<String>> list = Arrays.asList(
Arrays.asList("a", "b"),
Arrays.asList("c", "d")
);
// map ще върне Stream<List<String>>
Stream<List<String>> mapped = list.stream()
.map(innerList -> innerList.stream().map(String::toUpperCase).collect(Collectors.toList()));
// flatMap ще върне Stream<String>
Stream<String> flatMapped = list.stream()
.flatMap(innerList -> innerList.stream().map(String::toUpperCase));
// flatMapped може да бъде събран в списък
List<String> result = flatMapped.collect(Collectors.toList()); // ["A", "B", "C", "D"]
Така flatMap е полезен, когато функцията връща вложени колекции, и е необходимо да се получи плоска структура.