Sobes.tech
Junior — Middle

Mi a különbség a map és flatMap módszerek között a Java Stream API-ban, és mik azok használatuk jellemzői?

sobes.tech MI

Válasz az MI-től

A Java Stream API map és flatMap módszerei az elemek átalakítására szolgálnak, de különböző módon működnek:

  • A map egy olyan függvényt fogad el, amely minden elemet egy másik elemmé alakít át. Ennek eredményeként ugyanannyi elemű, de más típusú vagy kinézetű áramlatot kapunk.

  • A flatMap egy olyan függvényt fogad el, amely minden elemet egy áramlatra (Stream) alakít, majd ezeket az áramlatokat ("lapítja") egy közös áramlatba egyesíti. Ez akkor hasznos, ha egy elemből több elemet akarunk kapni.

Példa:

List<String> words = Arrays.asList("hello", "world");

// map: minden szót a hosszára alakítunk
List<Integer> lengths = words.stream()
    .map(String::length)
    .collect(Collectors.toList()); // [5, 5]

// flatMap: minden szót betűkre bontunk és az összes betűt egy áramlatba egyesítjük
List<String> letters = words.stream()
    .flatMap(word -> Arrays.stream(word.split("")))
    .collect(Collectors.toList()); // [h, e, l, l, o, w, o, r, l, d]

Használati jellemzők:

  • A map alkalmas egyszerű elemenkénti átalakításokra.
  • A flatMap akkor szükséges, ha egy elem több elemet eredményez, és az összetett struktúrákat "lapítanunk" kell.