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
mapegy 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
flatMapegy 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
mapalkalmas egyszerű elemenkénti átalakításokra. - A
flatMapakkor szükséges, ha egy elem több elemet eredményez, és az összetett struktúrákat "lapítanunk" kell.