logo

flatMap() metode i Java 8

Det Strøm API blev introduceret i Java 8 der bruges til at behandle samlinger af objekter. Det kan bruges ved at importere java.util.stream pakke. I dette afsnit vil vi diskutere Stream.flatMap() metode til Stream API. Vi vil også diskutere nøgleforskelle mellem Stream.flatMap()- og Stream.map()-metoden i Java 8.

... i java
flatMap() metode i Java 8

Før vi går over til emnet, vil vi først forstå Stream.map() metode. Fordi flatMap() metoden er baseret på kort() metode.

Java Stream.map() metode

Det Stream.map() metoden udfører en mellemoperation ved at bruge mapper-funktionen. Det producerer en ny strøm for hvert element. Det forvandler alle streams til en enkelt stream for at give resultatet. derfor bliver hvert element i strømmen konverteret til en ny strøm.

Syntaks:

 Stream map(Function mapper) 

R: Det er en typeparameter, der repræsenterer elementtypen for den nye strøm.

kortlægger: Det er en parameter, der er ikke-interfererende, tilstandsløs funktion, der skal anvendes på hvert element.

Eksempel på map()-metoden

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

Overvej ovenstående udsagn for et kort over strøm . Det opretter en resulterende strøm ved hjælp af map(). I hver iteration opretter map() en separat strøm med resultatet ved at udføre mapper-funktionen. Til sidst transformerer map() alle strømme til en enkelt strøm.

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

Produktion:

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

Java Stream.flatMap() metode

I Java 8 Streams anvender flatMap()-metoden operation som en kortlægningsfunktion og giver en strøm af elementværdier. Det betyder, at map()-metoden i hver iteration af hvert element skaber en separat ny strøm. Ved at bruge fladningsmekanismen samler den alle strømme til en enkelt resulterende strøm. Kort sagt, det bruges til at konvertere en Stream of Stream til en liste med værdier.

Syntaks:

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

Metoden tager en funktion som et argument. Den accepterer T som en parameter og returnerer en strøm af R.

R: Det er en typeparameter, der repræsenterer elementtypen for den nye strøm.

kortlægger: Det er en parameter, der er en ikke-interfererende, tilstandsløs funktion, der skal anvendes på hvert element. Det producerer en strøm af nye værdier.

Kort sagt kan vi sige, at metoden flatMap() hjælper med at konvertere Strøm til Strøm . Den præsterer udfladning (flad eller flad) og kortlægning (kort), samtidigt. Stream.flatMap()-metoden kombinerer både operationerne, dvs. flad og kort.

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

Lad os forstå betydningen af ​​fladning.

Hvad er udfladning?

Udfladning er processen med at konvertere flere lister med lister og flette alle disse lister for at skabe en enkelt liste, der indeholder alle elementerne fra alle listerne.

værdien af ​​java-strengen

Udfladningseksempel

Overvej følgende lister med lister:

Før udfladning: [[1, 2, 3, 4], [7, 8, 9, 0], [5, 6], [12, 18, 19, 20, 17], [22]]

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

java localdate

Eksempel på flatMap()-metoden

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

Vi kan bruge en flatMap()-metode på en strøm med mappefunktionen List::stream. Ved udførelse af streamterminaloperationen giver hvert element i flatMap() en separat strøm. I den sidste fase transformerer flatMap()-metoden alle streams til en ny stream. I ovenstående strøm observerer vi, at den ikke indeholder duplikerede værdier.

Lad os oprette et Java-program og bruge flatMap()-metoden.

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>

Produktion:

 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] 

Nu har vi forstået begge metoder i Stream-klassen. Da vi nemt kan påpege de vigtigste forskelle mellem dem.

Stream.flatMap() vs. Stream.map()

Følgende tabel beskriver de vigtigste forskelle mellem Stream.flatMap() og Stream.map().

flatMap() metode i Java 8
Stream.flatMap() Stream.map()
Den behandler strømmen af ​​strømmens værdier. Den bearbejder værdistrømmen.
Den udfører kortlægning sammen med udfladning. Den udfører kun kortlægning.
Det transformerer data fra Streamat streame. Det transformerer data fra Stream til Stream.
Den bruger One-To-Many-kortlægning. Den bruger en-til-en-kortlægning.
Dets mapper-funktion producerer flere værdier (strøm af værdier) for hver inputværdi. Dets mapper-funktion producerer enkelte værdier for hver inputværdi.
Brug metoden flatMap() når mappefunktionen producerer flere værdier for hver inputværdi. Brug map()-metoden, når mapper-funktionen producerer enkelte værdier for hver inputværdi.