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 функциясы ички коллекциялар кайтарган учурда жана түз структура керек болсо пайдалуу болот.