logo

metoda flatMap() v Javi 8

The Tok API je bil uveden v Java 8 ki se uporablja za obdelavo zbirk predmetov. Uporablja se lahko z uvozom java.util.stream paket. V tem razdelku bomo razpravljali o Stream.flatMap() metodo Stream API. Razpravljali bomo tudi o ključne razlike med metodo Stream.flatMap() in Stream.map() v Javi 8.

vzorčna koda c#
metoda flatMap() v Javi 8

Preden preidemo na temo, bomo najprej razumeli Stream.map() metoda. Zaradi flatMap() Metoda temelji na zemljevid() metoda.

Metoda Java Stream.map().

The Stream.map() izvede vmesno operacijo z uporabo funkcije preslikave. Za vsak element ustvari nov tok. Vse tokove pretvori v en sam tok, da zagotovi rezultat. zato se vsak element toka pretvori v nov tok.

Sintaksa:

 Stream map(Function mapper) 

R: To je parameter tipa, ki predstavlja tip elementa novega toka.

maper: To je parameter, ki je nemoteča funkcija brez stanja, ki se uporablja za vsak element.

Primer metode map().

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

Upoštevajte zgornjo izjavo za zemljevid tok . Ustvari nastali tok z uporabo map(). V vsaki ponovitvi map() ustvari ločen tok z rezultatom z izvajanjem funkcije preslikave. Končno map() pretvori vse tokove v en sam tok.

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

Izhod:

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

Metoda Java Stream.flatMap().

notri Java 8 Streams, metoda flatMap() uporablja operacijo kot funkcijo preslikave in zagotavlja tok vrednosti elementov. To pomeni, da v vsaki ponovitvi vsakega elementa metoda map() ustvari ločen nov tok. Z uporabo mehanizma sploščenja združi vse tokove v en sam nastali tok. Skratka, uporablja se za pretvorbo Stream of Stream v seznam vrednosti.

Sintaksa:

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

Metoda sprejme funkcijo kot argument. Sprejme T kot parameter in vrne tok R.

R: To je parameter tipa, ki predstavlja tip elementa novega toka.

maper: To je parameter, ki je nemoteča funkcija brez stanja, ki se uporablja za vsak element. Proizvaja tok novih vrednot.

Na kratko lahko rečemo, da metoda flatMap() pomaga pri pretvorbi Tok do Tok . Izvaja sploščenje (ravnati ali sploščiti) in kartiranje (zemljevid), hkrati. Metoda Stream.flatMap() združuje obe operaciji, tj. ravno in zemljevid.

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

Razumejmo pomen sploščenja.

Kaj je sploščenje?

Sploščitev je postopek pretvorbe več seznamov seznamov in združitve vseh teh seznamov v en sam seznam, ki vsebuje vse elemente iz vseh seznamov.

enako metoda v Javi

Primer izravnave

Razmislite o naslednjih seznamih seznamov:

Pred sploščenjem: [[1, 2, 3, 4], [7, 8, 9, 0], [5, 6], [12, 18, 19, 20, 17], [22]]

Po sploščenju: [1, 2, 3, 4, 7, 8, 9, 0, 5, 6, 12, 18, 19, 20, 17, 22]

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

Uporabimo lahko metodo flatMap() na toku s funkcijo preslikave List::stream. Ob izvedbi terminalske operacije toka vsak element flatMap() zagotovi ločen tok. V končni fazi metoda flatMap() pretvori vse tokove v nov tok. V zgornjem toku opazimo, da ne vsebuje podvojenih vrednosti.

Ustvarimo program Java in uporabimo 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>

Izhod:

 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] 

Zdaj smo razumeli obe metodi razreda Stream. Ker zlahka izpostavimo ključne razlike med njimi.

niz nadomesti vse jave

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

Naslednja tabela opisuje ključne razlike med Stream.flatMap() in Stream.map().

metoda flatMap() v Javi 8
Stream.flatMap() Stream.map()
Obdeluje tok vrednosti toka. Obdeluje tok vrednosti.
Izvaja preslikavo skupaj s sploščitvijo. Izvaja samo preslikavo.
Preoblikuje podatke iz Streamv Stream. Podatke pretvarja iz toka v tok.
Uporablja preslikavo enega proti mnogo. Uporablja preslikavo ena proti ena.
Njegova funkcija preslikave ustvari več vrednosti (tok vrednosti) za vsako vhodno vrednost. Njegova funkcija preslikave ustvari posamezne vrednosti za vsako vhodno vrednost.
Uporabite metodo flatMap(), ko funkcija preslikave proizvaja več vrednosti za vsako vhodno vrednost. Uporabite metodo map(), ko funkcija preslikave proizvaja posamezne vrednosti za vsako vhodno vrednost.