Sobes.tech
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 е полезен, когато функцията връща вложени колекции, и е необходимо да се получи плоска структура.