logo

Transmiteți în flux flatMap() în Java cu exemple

Transmite în flux flatMap (Mapper funcții) returnează un flux format din rezultatele înlocuirii fiecărui element al acestui flux cu conținutul unui flux mapat produs prin aplicarea funcției de mapare furnizată fiecărui element. Stream flatMap(Function mapper) este un operație intermediară . Aceste operațiuni sunt întotdeauna leneșe. Operațiunile intermediare sunt invocate pe o instanță Stream și, după ce își termină procesarea, dau o instanță Stream ca ieșire.

Notă : Fiecare flux mapat este închis după ce conținutul său a fost plasat în acest flux. Dacă un flux mapat este nul, se folosește în schimb un flux gol.



flatMap() V/s Hartă() :
1) Hartă() ia un flux și îl transformă într-un alt flux. Acesta aplică o funcție pe fiecare element al fluxului și stochează valoarea returnată în noul flux. Nu aplatizează fluxul. Dar flatMap() este combinația dintre o hartă și o operație plată, adică aplică o funcție elementelor și le aplatizează.
2) Hartă() este folosit doar pentru transformare, dar flatMap() este folosit atât pentru transformare, cât și pentru aplatizare.

Sintaxa:

 < R>Curent< R>flatMap (Funcția< ? super T, ? extends Stream< ? extends R>> mapper) unde, R este tipul de element al noului flux. Fluxul este o interfață și T este tipul de elemente de flux. mapper este o funcție fără stat care este aplicată fiecărui element, iar funcția returnează noul flux.>>> 

Exemplul 1: Funcția flatMap() cu funcția de mapare furnizată.








// Java code for Stream flatMap> // (Function mapper) to get a stream by> // replacing the stream with a mapped> // stream by applying the provided mapping function.> import> java.util.*;> import> java.util.stream.Stream;> > class> GFG {> > >// Driver code> >public> static> void> main(String[] args)> >{> > >// Creating a List of Strings> >List list = Arrays.asList(>'5.6'>,>'7.4'>,>'4'>,> >'1'>,>'2.3'>);> > >// Using Stream flatMap(Function mapper)> >list.stream().flatMap(num ->Flux.de(num)).>>> forEach(System.out::println);> >}> }>

>

Ieșire:

 5.6 7.4 4 1 2.3>

Exemplul 2: Funcția flatMap() cu operarea furnizată de șir de mapare cu caracterul în poziția 2.

cati ani are Kylie Jenner




// Java code for Stream flatMap> // (Function mapper) to get a stream by> // replacing the stream with a mapped> // stream by applying the provided mapping function.> import> java.util.*;> import> java.util.stream.Stream;> > class> GFG {> > >// Driver code> >public> static> void> main(String[] args)> >{> > >// Creating a List of Strings> >List list = Arrays.asList(>'Geeks'>,>'GFG'>,> >'techcodeview.com'>,>'gfg'>);> > >// Using Stream flatMap(Function mapper)> >list.stream().flatMap(str ->>>> Stream.of(str.charAt(>2>))).> >forEach(System.out::println);> >}> }>

>

sql select din mai multe tabele
>

Ieșire:

 e G e g>

Cum funcționează flatMap()?

După cum sa discutat deja în postare, flatMap() este combinația dintre o hartă și o operație plată, adică mai întâi aplică funcția de hartă și apoi aplatizează rezultatul. Să luăm în considerare câteva exemple pentru a înțelege ce este exact aplatizarea unui flux.
Exemplul 1:
Lista înainte de aplatizare:

 [ [2, 3, 5], [7, 11, 13], [17, 19, 23] ]>

Lista are 2 niveluri și constă din 3 liste mici. După aplatizare, se transformă într-o structură de un singur nivel, după cum se arată:

 [ 2, 3, 5, 7, 11, 13, 17, 19, 23 ]>

Exemplul 2:
Lista înainte de aplatizare:

 [ ['G', 'E', 'E'], ['K', 'S', 'F'], ['O', 'R', 'G'], ['E', 'E', 'K', 'S'] ]>

Lista are 3 niveluri și constă din 4 liste mici. După aplatizare, se transformă într-o structură de un singur nivel, după cum se arată:

 ['G', 'E', 'E', 'K', 'S', 'F', 'O', 'R', 'G', 'E', 'E', 'K', 'S']>

Pe scurt, putem spune că dacă există o Flux de Listă de << Tip de date >> înainte de aplatizare, apoi la aplicarea flatMap(), Flux de << Tip de date >> se returnează după turtire.
Aplicatie:




// Java code for Stream flatMap(Function mapper)> import> java.util.*;> import> java.util.stream.Collectors;> > class> GFG> {> >// Driver code> >public> static> void> main(String[] args)> >{> >// Creating a list of Prime Numbers> >List PrimeNumbers = Arrays.asList(>5>,>7>,>11>,>13>);> > >// Creating a list of Odd Numbers> >List OddNumbers = Arrays.asList(>1>,>3>,>5>);> > >// Creating a list of Even Numbers> >List EvenNumbers = Arrays.asList(>2>,>4>,>6>,>8>);> > >List listOfListofInts => >Arrays.asList(PrimeNumbers, OddNumbers, EvenNumbers);> > >System.out.println(>'The Structure before flattening is : '> +> >listOfListofInts);> > >// Using flatMap for transformating and flattening.> >List listofInts = listOfListofInts.stream()> >.flatMap(list ->list.stream())>> >.collect(Collectors.toList());> > >System.out.println(>'The Structure after flattening is : '> +> >listofInts);> >}> }>

>

>

Ieșire:

 The Structure before flattening is : [[5, 7, 11, 13], [1, 3, 5], [2, 4, 6, 8]] The Structure after flattening is : [5, 7, 11, 13, 1, 3, 5, 2, 4, 6, 8]>