logo

Transmet flatMap() en Java amb exemples

Transmet flatMap (mapeador de funcions) retorna un flux que consisteix en els resultats de la substitució de cada element d'aquest flux amb el contingut d'un flux assignat produït aplicant la funció de mapeig proporcionada a cada element. Stream flatMap (Mapeador de funcions) és un operació intermèdia . Aquestes operacions sempre són mandroses. Les operacions intermèdies s'invoquen en una instància de Stream i després d'acabar el seu processament, donen una instància de Stream com a sortida.

Nota : Cada flux assignat es tanca després que el seu contingut s'hagi col·locat en aquest flux. Si un flux assignat és nul, s'utilitza un flux buit.



flatMap() V/s mapa () :
1) mapa () agafa un Stream i el transforma en un altre Stream. Aplica una funció a cada element de Stream i emmagatzema el valor de retorn al nou Stream. No aplana el rierol. Però flatMap() és la combinació d'un mapa i una operació plana, és a dir, aplica una funció als elements i també els aplana.
2) mapa () s'utilitza només per a la transformació, però flatMap() s'utilitza tant per a la transformació com per a l'aplanament.

Sintaxi:

 < R>corrent< R>flatMap (Funció< ? super T, ? extends Stream< ? extends R>> mapper) on, R és el tipus d'element del nou flux. El flux és una interfície i T és el tipus d'elements del flux. mapper és una funció sense estat que s'aplica a cada element i la funció retorna el nou flux.>>> 

Exemple 1: Funció flatMap() amb la funció de mapeig proporcionada.








// 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 ->Corrent.de (número)).>>> forEach(System.out::println);> >}> }>

>

Sortida:

 5.6 7.4 4 1 2.3>

Exemple 2: Funció flatMap() amb l'operació proporcionada de la cadena de mapatge amb caràcter a la posició 2.

xarxa neuronal artificial




// 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);> >}> }>

>

>

Sortida:

 e G e g>

Com funciona flatMap()?

Com ja s'ha comentat a la publicació, flatMap() és la combinació d'un mapa i una operació plana, és a dir, primer aplica la funció de mapa i després aplana el resultat. Considerem alguns exemples per entendre què és exactament aplanar un corrent.
Exemple 1:
La llista abans d'aplanar:

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

La llista té 2 nivells i consta de 3 petites llistes. Després de l'aplanament, es transforma en una estructura de nivell tal com es mostra:

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

Exemple 2:
La llista abans d'aplanar:

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

La llista té 3 nivells i consta de 4 petites llistes. Després de l'aplanament, es transforma en una estructura de nivell tal com es mostra:

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

En resum, podem dir que si hi ha a Seqüència de la llista de << Tipus de dades >> abans d'aplanar, després en aplicar flatMap(), Corrent de << Tipus de dades >> es retorna després de l'aplanament.
Aplicació:




// 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);> >}> }>

com centrar una imatge en CSS
>

>

Sortida:

 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]>