Junior — Middle
Koje su razlike između metoda map i flatMap u Java Stream API i koje su njihove karakteristike korišćenja?
sobes.tech АИ
Одговор од АИ
Metode map i flatMap u Java Stream API služe za transformaciju elemenata toka, ali rade na različite načine:
-
mapprihvata funkciju koja svaki element toka pretvara u drugi element. Kao rezultat, dobijamo tok sa istim brojem elemenata, ali drugog tipa ili izgleda. -
flatMapprihvata funkciju koja svaki element pretvara u tok (Stream) elemenata, a zatim "spljoštava" sve te tokove u jedan zajednički tok. Ovo je korisno kada iz jednog elementa želimo da dobijemo više elemenata.
Primer:
List<String> words = Arrays.asList("hello", "world");
// map: pretvaramo svaku reč u njen dužinu
List<Integer> lengths = words.stream()
.map(String::length)
.collect(Collectors.toList()); // [5, 5]
// flatMap: delimo svaku reč na slova i spajamo sva slova u jedan tok
List<String> letters = words.stream()
.flatMap(word -> Arrays.stream(word.split("")))
.collect(Collectors.toList()); // [h, e, l, l, o, w, o, r, l, d]
Karakteristike korišćenja:
mapje pogodan za jednostavne transformacije elemenata jedan na jedan.flatMapje potreban kada iz jednog elementa želimo da dobijemo više, i kada je potrebno "spljoštiti" ugnježdene strukture.