Sobes.tech
Junior — Middle

Оё метавонед шарҳ диҳед, ки чӣ гуна методи flatMap ва чӣ гуна аз map фарқ мекунад?

sobes.tech AI

Ҷавоб аз AI

Методи map ба истифода мебарад ба ҷамъоварӣ ва ҳар як унсурро табдил медиҳад, бо баргардонидани ҷамъоварии нав бо унсурҳое, ки ба натиҷаҳои функсия мувофиқат мекунанд.

flatMap аввал функсияро истифода мебарад, ки барои ҳар унсур ҷамъоварӣ (ё ҷараён) бармегардонад, ва сипас ҳамаи ин ҷамъовариро ба як ҷараён ё рӯйхати ягона "филтрат" мекунад.

Масалан дар 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 дар ҳолатҳои, ки функсия ҷамъоварии дарунӣ бармегардонад, ва лозим аст, ки структураи ҳамвор ба даст ояд, муфид аст.