logo

Metodo flatMap() in Java 8

IL Flusso L'API è stata introdotta in Giava8 che viene utilizzato per elaborare le raccolte di oggetti. Può essere utilizzato importando il file java.util.stream pacchetto. In questa sezione discuteremo di Stream.flatMap() metodo dell'API Stream. Inoltre, discuteremo di differenze chiave tra il metodo Stream.flatMap() e Stream.map() in Java 8.

elenco dei caratteri gimp
Metodo flatMap() in Java 8

Prima di passare all'argomento, capiremo innanzitutto il Stream.mappa() metodo. Perché il mappapiatta() il metodo si basa su carta geografica() metodo.

Metodo Java Stream.map()

IL Stream.mappa() Il metodo esegue un'operazione intermedia utilizzando la funzione mapper. Produce un nuovo flusso per ciascun elemento. Trasforma tutti i flussi in un unico flusso per fornire il risultato. pertanto, ogni elemento dello stream viene convertito in un nuovo stream.

Sintassi:

 Stream map(Function mapper) 

R: È un parametro di tipo che rappresenta il tipo di elemento del nuovo flusso.

mappatore: È un parametro che non interferisce, è una funzione senza stato da applicare a ciascun elemento.

Esempio del metodo map()

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

Considera l'affermazione precedente per una mappa del flusso . Crea un flusso risultante utilizzando map(). In ogni iterazione, map() crea un flusso separato con il risultato eseguendo la funzione mapper. Alla fine, map() trasforma tutti i flussi in un unico flusso.

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

Produzione:

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

Metodo Java Stream.flatMap()

In Giava 8 Streams, il metodo flatMap() applica l'operazione come funzione del mapper e fornisce un flusso di valori di elemento. Ciò significa che in ogni iterazione di ciascun elemento il metodo map() crea un nuovo flusso separato. Utilizzando il meccanismo di appiattimento, unisce tutti i flussi in un unico flusso risultante. In breve, viene utilizzato per convertire uno Stream di Stream in un elenco di valori.

Sintassi:

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

Il metodo accetta una funzione come argomento. Accetta T come parametro e restituisce un flusso di R.

R: È un parametro di tipo che rappresenta il tipo di elemento del nuovo flusso.

mappatore: È un parametro che è una funzione senza interferenze e senza stato da applicare a ciascun elemento. Produce un flusso di nuovi valori.

In breve possiamo dire che il metodo flatMap() aiuta nella conversione Flusso A Flusso . Si esibisce appiattimento (piatto o appiattito) e Mappatura (mappa), contemporaneamente. Il metodo Stream.flatMap() combina entrambe le operazioni, ovvero flat e map.

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

Comprendiamo il significato di appiattimento.

Cos'è l'appiattimento?

Appiattimento è il processo di conversione di diversi elenchi di elenchi e di unione di tutti questi elenchi per creare un unico elenco contenente tutti gli elementi di tutti gli elenchi.

pulsante centrale css

Esempio di appiattimento

Considera i seguenti elenchi di elenchi:

Prima dell'appiattimento: [[1, 2, 3, 4], [7, 8, 9, 0], [5, 6], [12, 18, 19, 20, 17], [22]]

Dopo l'appiattimento: [1, 2, 3, 4, 7, 8, 9, 0, 5, 6, 12, 18, 19, 20, 17, 22]

Esempio del metodo 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()); 

Possiamo utilizzare un metodo flatMap() su uno stream con la funzione mapper List::stream. Durante l'esecuzione dell'operazione del terminale del flusso, ogni elemento di flatMap() fornisce un flusso separato. Nella fase finale, il metodo flatMap() trasforma tutti i flussi in un nuovo flusso. Nel flusso sopra, osserviamo che non contiene valori duplicati.

Creiamo un programma Java e utilizziamo il metodo 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>

Produzione:

 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] 

Ora abbiamo compreso entrambi i metodi della classe Stream. Dal momento che possiamo facilmente evidenziare le principali differenze tra loro.

proprietà acide

Stream.flatMap() vs. Stream.mappa()

La tabella seguente descrive le differenze principali tra Stream.flatMap() e Stream.map().

Metodo flatMap() in Java 8
Stream.flatMap() Stream.mappa()
Elabora il flusso dei valori del flusso. Elabora il flusso di valori.
Esegue la mappatura insieme all'appiattimento. Esegue solo la mappatura.
Trasforma i dati da Streamper eseguire lo streaming. Trasforma i dati da Stream a Stream.
Utilizza la mappatura uno-a-molti. Utilizza la mappatura uno-a-uno.
La sua funzione mapper produce più valori (flusso di valori) per ciascun valore di input. La sua funzione mapper produce valori singoli per ciascun valore di input.
Utilizzare il metodo flatMap() quando la funzione mapper produce più valori per ciascun valore di input. Utilizza il metodo map() quando la funzione mapper produce valori singoli per ciascun valore di input.