logo

Método flatMap() en Java 8

El Arroyo La API se introdujo en Java 8 que se utiliza para procesar las colecciones de objetos. Se puede utilizar importando el java.util.stream paquete. En esta sección, discutiremos la Corriente.planoMap() método de la API Stream. Además, discutiremos el diferencias clave entre el método Stream.flatMap() y Stream.map() en Java 8.

fecha actual en java
Método flatMap() en Java 8

Antes de pasar al tema, primero entenderemos el Stream.map() método. Porque el mapa plano() método se basa en la mapa() método.

Método Java Stream.map()

El Stream.map() El método realiza una operación intermedia utilizando la función del asignador. Produce una nueva secuencia para cada elemento. Transforma todas las transmisiones en una sola secuencia para proporcionar el resultado. por lo tanto, cada elemento de la secuencia se convierte en una nueva secuencia.

Sintaxis:

 Stream map(Function mapper) 

R: Es un parámetro de tipo que representa el tipo de elemento de la nueva secuencia.

mapeador: Es un parámetro que no interfiere y es una función sin estado que se aplica a cada elemento.

Ejemplo del método map()

 List citylist = Arrays.asList('delhi', 'mumbai', 'hyderabad', 'ahmedabad', 'indore', 'patna'). stream(). map(String::toUpperCase).collect(Collectors.toList()); 

Considere la afirmación anterior para un mapa del arroyo . Crea una secuencia resultante usando el mapa(). En cada iteración, map() crea una secuencia separada con el resultado ejecutando la función del asignador. Por último, map() transforma todas las secuencias en una sola secuencia.

MapExample.java

 import java.util.*; public class MapExample { public static void main(String args[]) { System.out.println('Stream After applying the map() function: '); //creats a list of integers List list = Arrays.asList(12, 45, 67, 19, 87, 2, 9); //creating a new stream of the elements an prints the same using the foreach loop list.stream().map(number -> number * 2).forEach(System.out::println); } } 

Producción:

 Stream After applying the map() function: 24 90 134 38 174 4 18 

Método Java Stream.flatMap()

En Java 8 Flujos, el método flatMap() aplica la operación como una función de mapeo y proporciona un flujo de valores de elementos. Significa que en cada iteración de cada elemento, el método map() crea una nueva secuencia separada. Al utilizar el mecanismo de aplanamiento, fusiona todas las secuencias en una única secuencia resultante. En resumen, se utiliza para convertir un Stream of Stream en una lista de valores.

Sintaxis:

 Stream flatMap(Function<? super T,? extends Stream> mapper) 

El método toma una función como argumento. Acepta T como parámetro y devuelve una secuencia de R.

R: Es un parámetro de tipo que representa el tipo de elemento de la nueva secuencia.

mapeador: Es un parámetro que es una función sin estado y que no interfiere para aplicar a cada elemento. Produce una corriente de nuevos valores.

En resumen, podemos decir que el método flatMap() ayuda a convertir Arroyo a Arroyo . realiza aplastamiento (planar o aplanar) y cartografía (mapa), simultáneamente. El método Stream.flatMap() combina ambas operaciones, es decir, plana y de mapa.

 flatMap() = Flattening (flat)+ mapping (map) 

Entendamos el significado de aplanamiento.

¿Qué es el aplanamiento?

Aplastamiento es el proceso de convertir varias listas de listas y fusionar todas esas listas para crear una lista única que contenga todos los elementos de todas las listas.

suma numerosa

Ejemplo de aplanamiento

Considere las siguientes listas de listas:

Antes de aplanar: [[1, 2, 3, 4], [7, 8, 9, 0], [5, 6], [12, 18, 19, 20, 17], [22]]

Después del aplanamiento: [1, 2, 3, 4, 7, 8, 9, 0, 5, 6, 12, 18, 19, 20, 17, 22]

Ejemplo del método flatMap()

 List country = Stream.of(Arrays.asList(&apos;Colombia&apos;, &apos;Finland&apos;, &apos;Greece&apos;, &apos;Iceland&apos;, &apos;Liberia&apos;, &apos;Mali&apos;, &apos;Mauritius&apos;), Arrays.asList(&apos;Peru&apos;, &apos;Serbia&apos;, &apos;Singapore&apos;, &apos;Turkey&apos;, &apos;Uzbekistan&apos;, &apos;Yemen&apos;, &apos;Zimbabwe&apos;, &apos;Greece&apos;, &apos;Iceland&apos;)).flatMap(List::stream) .collect(Collectors.toList()); 

Podemos usar un método flatMap() en una secuencia con la función de mapeo List::stream. Al ejecutar la operación del terminal de flujo, cada elemento de flatMap() proporciona un flujo separado. En la fase final, el método flatMap() transforma todas las secuencias en una nueva secuencia. En la secuencia anterior, observamos que no contiene valores duplicados.

Creemos un programa Java y usemos el método flatMap().

FlatMapExample.java

 import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class FlatmapExample { public static void main(String args[]) { //creating ArrayList List productlist1 = Arrays.asList(&apos;Printer&apos;, &apos;Mouse&apos;, &apos;Keyboard&apos;, &apos;Motherboard&apos;); List productlist2 = Arrays.asList(&apos;Scanner&apos;, &apos;Projector&apos;, &apos;Light Pen&apos;); List productlist3 = Arrays.asList(&apos;Pen Drive&apos;, &apos;Charger&apos;, &apos;WIFI Adapter&apos;, &apos;Cooling Fan&apos;); List productlist4 = Arrays.asList(&apos;CPU Cabinet&apos;, &apos;WebCam&apos;, &apos;USB Light&apos;, &apos;Microphone&apos;, &apos;Power cable&apos;); List<list> allproducts = new ArrayList<list>(); //adding elements to the list allproducts.add(productlist1); allproducts.add(productlist2); allproducts.add(productlist3); allproducts.add(productlist4); //creating a list of all products List listOfAllProducts = new ArrayList(); //for each loop iterates over the list for(List pro : allproducts) { for(String product : pro) { //adds all products to the list listOfAllProducts.add(product); } } System.out.println(&apos;List Before Applying mapping and Flattening: 
&apos;); //prints stream before applying the flatMap() method System.out.println(listOfAllProducts); System.out.println(); //creats a stream of elemnts using flatMap() List flatMapList = allproducts .stream().flatMap(pList -&gt; pList.stream()).collect(Collectors.toList()); System.out.println(&apos;List After Applying Mapping and Flattening Operation: 
&apos;); //prints the new stream that we get after applying mapping and flattening System.out.println(flatMapList); } } </list></list>

Producción:

 List Before Applying mapping and Flattening: [Printer, Mouse, Keyboard, Motherboard, Scanner, Projector, Lighten, Pen Drive, Charger, WIFI Adapter, Cooling Fan, CPU Cabinet, WebCam, USB Light, Microphone] List After Applying Mapping and Flattening Operation: [Printer, Mouse, Keyboard, Motherboard, Scanner, Projector, Light Pen, Pen Drive, Charger, WIFI Adapter, Cooling Fan, CPU Cabinet, WebCam, USB Light, Microphone] 

Ahora hemos entendido ambos métodos de la clase Stream. Ya que podemos señalar fácilmente las diferencias clave entre ellos.

edad de hrithik roshan

Stream.flatMap() vs. Corriente.mapa()

La siguiente tabla describe las diferencias clave entre Stream.flatMap() y Stream.map().

Método flatMap() en Java 8
Corriente.planoMap() Stream.map()
Procesa el flujo de valores del flujo. Procesa el flujo de valores.
Realiza mapeo junto con aplanamiento. Realiza únicamente mapeo.
Transforma datos de Streampara transmitir. Transforma datos de Stream a Stream.
Utiliza mapeo uno a muchos. Utiliza mapeo uno a uno.
Su función de mapeo produce múltiples valores (flujo de valores) para cada valor de entrada. Su función de mapeo produce valores únicos para cada valor de entrada.
Utilice el método flatMap() cuando la función del asignador produzca múltiples valores para cada valor de entrada. Utilice el método map() cuando la función del asignador produzca valores únicos para cada valor de entrada.