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-ը հարմար է, երբ ֆունկցիան վերադարձնում է ներբեռնված հավաքածուներ, և անհրաժեշտ է ստանալ հարթ կառուցվածք։