Junior — Middle
Kāda ir atšķirība starp map un flatMap metodēm Java Stream API un kādas ir to lietošanas īpatnības?
sobes.tech AI
Atbilde no AI
Java Stream API map un flatMap metodes ir kalpo elementu pārveidošanai plūsmā, bet darbojas dažādi:
-
mappieņem funkciju, kas katru plūsmas elementu pārveido par citu elementu. Rezultātā iegūstam plūsmu ar tādu pašu elementu skaitu, bet ar citu tipu vai izskatu. -
flatMappieņem funkciju, kas katru elementu pārveido par plūsmu (Stream) elementu, un pēc tam šīs plūsmas ("plakanas") apvieno vienā kopīgā plūsmā. Tas ir noderīgi, ja no viena elementa nepieciešams iegūt vairākus elementus.
Piemērs:
List<String> words = Arrays.asList("hello", "world");
// map: pārveido katru vārdu tā garumā
List<Integer> lengths = words.stream()
.map(String::length)
.collect(Collectors.toList()); // [5, 5]
// flatMap: sadala katru vārdu pa burtiem un apvieno visus burtus vienā plūsmā
List<String> letters = words.stream()
.flatMap(word -> Arrays.stream(word.split("")))
.collect(Collectors.toList()); // [h, e, l, l, o, w, o, r, l, d]
Lietošanas īpatnības:
mapir piemērots vienkāršiem elementu pārveidojumiem pa vienam.flatMapir nepieciešams, ja no viena elementa jāiegūst vairāk un ir jā"izlīdzina" iekšējās struktūras.