Sobes.tech
Junior — Middle

Kas on flatMap meetod ja kuidas see erineb mapist?

sobes.tech AI

Vastus AI-lt

Meetod map rakstīts kolektsioonile ja teisendab iga elemendi, tagastades uue kolektsiooni, mis vastab funktsiooni tulemustele.

flatMap rakendub esmalt funktsioon, mis tagastab iga elemendi jaoks kogumi (või voolu), ning seejärel "lameerib" (flatten) kõik need kogumid üheks ühiseks vooluks või nimekirjaks.

Näide Java voogudega:

List<List<String>> list = Arrays.asList(
    Arrays.asList("a", "b"),
    Arrays.asList("c", "d")
);

// map tagastab Stream<List<String>>
Stream<List<String>> mapped = list.stream()
    .map(innerList -> innerList.stream().map(String::toUpperCase).collect(Collectors.toList()));

// flatMap tagastab Stream<String>
Stream<String> flatMapped = list.stream()
    .flatMap(innerList -> innerList.stream().map(String::toUpperCase));

// flatMapped saab koguda nimekirja
List<String> result = flatMapped.collect(Collectors.toList()); // ["A", "B", "C", "D"]

Seetõttu on flatMap kasulik, kui funktsioon tagastab sisekogumid ja soovitakse saada lame struktuur.