Middle
Kāda ir atšķirība starp operācijām map un flatMap?
sobes.tech AI
Atbilde no AI
map pārveido katru straumes elementu par jaunu elementu un atgriež tādu pašu elementu skaitu saturu straumi.
flatMap pārveido katru elementu par elementu straumi un pēc tam šos iebūvētos straumes apvieno vienā plakanā straumē. To izmanto, kad viena elementa pārveidošana noved pie vairākiem elementiem.
Piemērs:
Pieņemsim, ka mums ir saraksts ar sarakstiem ar virknes elementiem: List<List<String>> listOfLists.
map lietošana:
// Pārveido katru virknes sarakstu par tā lielumu
listOfLists.stream()
.map(list -> list.size())
.forEach(System.out::println);
// Izdrukā katra iekšējā saraksta lielumu: 2, 3, 1 un tā tālāk.
flatMap lietošana:
// Pārveido katru virknes sarakstu par straumi no šīs saraksta
// un apvieno tās (izlīdzina) vienā straumē
listOfLists.stream()
.flatMap(list -> list.stream())
.forEach(System.out::println);
// Izdrukā visas virknes no visiem iekšējiem sarakstiem: "a", "b", "c", "d", "e"...
Salīdzināšanas tabula:
| Operācija | Ievads | Pārveidošana | Izvads | Mērķis |
|---|---|---|---|---|
map |
Stream<T> |
T -> R |
Stream<R> |
Katras elementa pārveidošana |
flatMap |
Stream<T> |
T -> Stream<R> |
Stream<R> |
Katra elementa pārveidošana uz straumi un apvienošana |