Transmitir flatMap (asignador de funciones) devuelve una secuencia que consta de los resultados de reemplazar cada elemento de esta secuencia con el contenido de una secuencia mapeada producida al aplicar la función de mapeo proporcionada a cada elemento. Stream flatMap (mapeador de funciones) es un operación intermedia . Estas operaciones siempre son vagas. Las operaciones intermedias se invocan en una instancia de Stream y, una vez que finalizan su procesamiento, dan una instancia de Stream como salida.
Nota : Cada secuencia asignada se cierra después de que su contenido se haya colocado en esta secuencia. Si una secuencia asignada es nula, en su lugar se utiliza una secuencia vacía.
mapaplano() V/s mapa() :
1) mapa() toma un Stream y lo transforma en otro Stream. Aplica una función en cada elemento de Stream y almacena el valor de retorno en un nuevo Stream. No aplana el arroyo. Pero flatMap() es la combinación de un mapa y una operación plana, es decir, aplica una función a los elementos y los aplana.
2) mapa() se usa solo para transformación, pero flatMap() se usa tanto para transformación como para aplanamiento.
Sintaxis:
< R>Arroyo< R>mapa plano(Función< ? super T, ? extends Stream< ? extends R>> mapper) donde, R es el tipo de elemento de la nueva secuencia. Stream es una interfaz y T es el tipo de elementos de flujo. mapper es una función sin estado que se aplica a cada elemento y la función devuelve la nueva secuencia.>
Ejemplo 1 : Función flatMap() con función de mapeo 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 ->Corriente.de(núm)).> >forEach(System.out::println);> >}> }> |
>
>
Producción :
5.6 7.4 4 1 2.3>
Ejemplo 2: Función flatMap() con operación proporcionada de mapeo de cadena con carácter en la posición 2.
java fecha local hora
// 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);> >}> }> |
>
>
Producción :
e G e g>
¿Cómo funciona flatMap()?
Como ya se analizó en la publicación, flatMap() es la combinación de un mapa y una operación plana, es decir, primero aplica la función de mapa y luego aplana el resultado. Consideremos algunos ejemplos para comprender qué es exactamente aplanar una corriente.
Ejemplo 1 :
La lista antes de aplanar:
[ [2, 3, 5], [7, 11, 13], [17, 19, 23] ]>
La lista tiene 2 niveles y consta de 3 listas pequeñas. Después del aplanamiento, se transforma en una estructura de un nivel como se muestra:
[ 2, 3, 5, 7, 11, 13, 17, 19, 23 ]>
Ejemplo 2:
La lista antes de aplanar:
[ ['G', 'E', 'E'], ['K', 'S', 'F'], ['O', 'R', 'G'], ['E', 'E', 'K', 'S'] ]>
La lista tiene 3 niveles y consta de 4 listas pequeñas. Después del aplanamiento, se transforma en una estructura de un nivel como se muestra:
['G', 'E', 'E', 'K', 'S', 'F', 'O', 'R', 'G', 'E', 'E', 'K', 'S']>
En resumen, podemos decir que si hay una Flujo de Lista de << Tipo de datos >> antes de aplanar, luego al aplicar flatMap(), Corriente de << Tipo de datos >> se devuelve después del aplanamiento.
Solicitud :
// 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);> >}> }> |
>
>
Producción :
jquery al hacer clic
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]>