Junior — Middle
Wat zijn de verschillen tussen de methoden map en flatMap in de Java Stream API en wat zijn hun gebruikskenmerken?
sobes.tech AI
Antwoord van AI
De methoden map en flatMap in de Java Stream API worden gebruikt om elementen van een stroom te transformeren, maar werken op verschillende manieren:
-
mapneemt een functie die elk element van de stroom omzet in een ander element. Het resultaat is een stroom met hetzelfde aantal elementen, maar van een ander type of uiterlijk. -
flatMapneemt een functie die elk element omzet in een stroom (Stream) van elementen, en combineert ("vlakt") vervolgens al deze stromen tot één gemeenschappelijke stroom. Dit is handig wanneer je uit één element meerdere elementen wilt krijgen.
Voorbeeld:
List<String> words = Arrays.asList("hello", "world");
// map: transformeer elk woord in zijn lengte
List<Integer> lengths = words.stream()
.map(String::length)
.collect(Collectors.toList()); // [5, 5]
// flatMap: splits elk woord in letters en combineert alle letters in één stroom
List<String> letters = words.stream()
.flatMap(word -> Arrays.stream(word.split("")))
.collect(Collectors.toList()); // [h, e, l, l, o, w, o, r, l, d]
Gebruikssituaties:
mapis geschikt voor eenvoudige element-voor-element transformaties.flatMapis nodig wanneer je uit één element meerdere wilt krijgen en geneste structuren wilt "platmaken".