logo

flatMap()-Methode in Java 8

Der Strom API wurde eingeführt Java 8 das zur Verarbeitung der Objektsammlungen verwendet wird. Es kann durch Importieren verwendet werden java.util.stream Paket. In diesem Abschnitt werden wir das besprechen Stream.flatMap() Methode der Stream-API. Außerdem werden wir das besprechen Hauptunterschiede zwischen den Methoden Stream.flatMap() und Stream.map() in Java 8.

Python-Druck auf 2 Dezimalstellen
flatMap()-Methode in Java 8

Bevor wir zum Thema übergehen, werden wir zunächst das verstehen Stream.map() Methode. Weil das flatMap() Die Methode basiert auf der Karte() Methode.

Java Stream.map()-Methode

Der Stream.map() Die Methode führt mithilfe der Mapper-Funktion eine Zwischenoperation aus. Es erzeugt für jedes Element einen neuen Stream. Es wandelt alle Streams in einen einzigen Stream um, um das Ergebnis bereitzustellen. Daher wird jedes Element des Streams in einen neuen Stream umgewandelt.

Syntax:

 Stream map(Function mapper) 

R: Es handelt sich um einen Typparameter, der den Elementtyp des neuen Streams darstellt.

Mapper: Es handelt sich um einen Parameter, bei dem es sich um eine nicht störende, zustandslose Funktion handelt, die auf jedes Element angewendet werden kann.

Beispiel für die Methode map()

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

Betrachten Sie die obige Aussage für eine Karte der Strom . Mithilfe von map() wird ein resultierender Stream erstellt. In jeder Iteration erstellt map() einen separaten Stream mit dem Ergebnis, indem es die Mapper-Funktion ausführt. Schließlich wandelt map() alle Streams in einen einzigen Stream um.

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

Ausgabe:

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

Java Stream.flatMap()-Methode

In Java 8 Streams: Die flatMap()-Methode wendet die Operation als Mapper-Funktion an und stellt einen Stream von Elementwerten bereit. Das bedeutet, dass die Methode „map()“ bei jeder Iteration jedes Elements einen separaten neuen Stream erstellt. Mithilfe des Flattening-Mechanismus werden alle Streams zu einem einzigen resultierenden Stream zusammengeführt. Kurz gesagt, es wird verwendet, um einen Stream of Stream in eine Werteliste umzuwandeln.

Syntax:

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

Die Methode akzeptiert eine Funktion als Argument. Es akzeptiert T als Parameter und gibt einen Stream von R zurück.

R: Es handelt sich um einen Typparameter, der den Elementtyp des neuen Streams darstellt.

Mapper: Es handelt sich um einen Parameter, bei dem es sich um eine nicht störende, zustandslose Funktion handelt, die auf jedes Element angewendet werden kann. Es erzeugt einen Strom neuer Werte.

Kurz gesagt können wir sagen, dass die Methode flatMap() beim Konvertieren hilft Strom Zu Strom . Es leistet Abflachung (flach oder flach) und Kartierung (Karte), gleichzeitig. Die Stream.flatMap()-Methode kombiniert beide Operationen, also Flat und Map.

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

Lassen Sie uns die Bedeutung des Abflachens verstehen.

Was ist Abflachung?

Abflachung ist der Prozess, bei dem mehrere Listen von Listen konvertiert und alle diese Listen zusammengeführt werden, um eine einzige Liste zu erstellen, die alle Elemente aus allen Listen enthält.

Ternärer Operator Java

Beispiel für eine Abflachung

Betrachten Sie die folgenden Listen:

Vor dem Abflachen: [[1, 2, 3, 4], [7, 8, 9, 0], [5, 6], [12, 18, 19, 20, 17], [22]]

Nach dem Abflachen: [1, 2, 3, 4, 7, 8, 9, 0, 5, 6, 12, 18, 19, 20, 17, 22]

Beispiel der flatMap()-Methode

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

Wir können eine flatMap()-Methode für einen Stream mit der Mapper-Funktion List::stream verwenden. Beim Ausführen der Stream-Terminaloperation stellt jedes Element von flatMap() einen separaten Stream bereit. In der letzten Phase wandelt die Methode flatMap() alle Streams in einen neuen Stream um. Im obigen Stream stellen wir fest, dass er keine doppelten Werte enthält.

Lassen Sie uns ein Java-Programm erstellen und die Methode flatMap() verwenden.

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>

Ausgabe:

Bash, wenn sonst
 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] 

Jetzt haben wir beide Methoden der Stream-Klasse verstanden. Da wir die wichtigsten Unterschiede zwischen ihnen leicht aufzeigen können.

Stream.flatMap() Vs. Stream.map()

In der folgenden Tabelle werden die wichtigsten Unterschiede zwischen Stream.flatMap() und Stream.map() beschrieben.

flatMap()-Methode in Java 8
Stream.flatMap() Stream.map()
Es verarbeitet den Strom der Stream-Werte. Es verarbeitet den Wertestrom.
Es führt die Zuordnung zusammen mit der Reduzierung durch. Es führt nur eine Zuordnung durch.
Es transformiert Daten aus Streamzum Streamen. Es wandelt Daten von Stream zu Stream um.
Es verwendet eine Eins-zu-Viele-Zuordnung. Es verwendet eine Eins-zu-eins-Zuordnung.
Seine Mapper-Funktion erzeugt für jeden Eingabewert mehrere Werte (Wertestrom). Seine Mapper-Funktion erzeugt einzelne Werte für jeden Eingabewert.
Verwenden Sie die Methode flatMap(), wenn die Mapper-Funktion für jeden Eingabewert mehrere Werte erzeugt. Verwenden Sie die Methode „map()“, wenn die Mapper-Funktion einzelne Werte für jeden Eingabewert erzeugt.