The Straume API tika ieviests Java 8 ko izmanto objektu kolekciju apstrādei. To var izmantot, importējot java.util.stream iepakojums. Šajā sadaļā mēs apspriedīsim Stream.flatMap() Stream API metode. Tāpat mēs apspriedīsim galvenās atšķirības starp Stream.flatMap() un Stream.map() metodi Java 8.
ja vēl ja java
Pirms pāriet pie tēmas, vispirms mēs sapratīsim Stream.map() metodi. Tāpēc ka flatMap() metode ir balstīta uz karte () metodi.
Java Stream.map() metode
The Stream.map() metode veic starpposma darbību, izmantojot kartētāja funkciju. Tas rada jaunu straumi katram elementam. Tas pārveido visas straumes vienā straumē, lai nodrošinātu rezultātu. tāpēc katrs straumes elements tiek pārveidots par jaunu straumi.
Sintakse:
Stream map(Function mapper)
R: Tas ir tipa parametrs, kas apzīmē jaunās straumes elementa veidu.
kartētājs: Tas ir parametrs, kas ir netraucējoša, bezstāvokļa funkcija, kas jāpiemēro katram elementam.
Kartes() metodes piemērs
List citylist = Arrays.asList('delhi', 'mumbai', 'hyderabad', 'ahmedabad', 'indore', 'patna'). stream(). map(String::toUpperCase).collect(Collectors.toList());
Apsveriet iepriekš minēto paziņojumu, lai izveidotu karti straume . Tas izveido iegūto straumi, izmantojot karti (). Katrā iterācijā map() izveido atsevišķu straumi ar rezultātu, izpildot kartētāja funkciju. Beidzot map() pārveido visas straumes vienā straumē.
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); } }
Izvade:
Stream After applying the map() function: 24 90 134 38 174 4 18
Java Stream.flatMap() metode
In Java 8 Straumes, metode flatMap() izmanto darbību kā kartētāja funkciju un nodrošina elementu vērtību plūsmu. Tas nozīmē, ka katrā katra elementa iterācijā map() metode izveido atsevišķu jaunu straumi. Izmantojot saplacināšanas mehānismu, tas apvieno visas plūsmas vienā iegūtā plūsmā. Īsāk sakot, to izmanto, lai Stream of Stream pārvērstu vērtību sarakstā.
Sintakse:
Stream flatMap(Function<? super T,? extends Stream> mapper)
Metode izmanto funkciju kā argumentu. Tas pieņem T kā parametru un atgriež R straumi.
R: Tas ir tipa parametrs, kas apzīmē jaunās straumes elementa veidu.
kartētājs: Tas ir parametrs, kas ir netraucējoša, bezstāvokļa funkcija, kas jāpiemēro katram elementam. Tas rada jaunu vērtību plūsmu.
Īsāk sakot, mēs varam teikt, ka flatMap () metode palīdz konvertēt Straume
flatMap() = Flattening (flat)+ mapping (map)
Sapratīsim saplacināšanas nozīmi.
Kas ir saplacināšana?
Izlīdzināšana ir process, kurā pārvērš vairākus sarakstu sarakstus un apvieno visus šos sarakstus, lai izveidotu vienu sarakstu, kurā ir visi visu sarakstu elementi.
java ir nulle
Izlīdzināšanas piemērs
Apsveriet šādus sarakstu sarakstus:
Pirms saplacināšanas: [[1, 2, 3, 4], [7, 8, 9, 0], [5, 6], [12, 18, 19, 20, 17], [22]]
Pēc saplacināšanas: [1, 2, 3, 4, 7, 8, 9, 0, 5, 6, 12, 18, 19, 20, 17, 22]
FlatMap() metodes piemērs
List country = Stream.of(Arrays.asList('Colombia', 'Finland', 'Greece', 'Iceland', 'Liberia', 'Mali', 'Mauritius'), Arrays.asList('Peru', 'Serbia', 'Singapore', 'Turkey', 'Uzbekistan', 'Yemen', 'Zimbabwe', 'Greece', 'Iceland')).flatMap(List::stream) .collect(Collectors.toList());
Mēs varam izmantot flatMap() metodi straumē ar kartētāja funkciju List::stream. Izpildot straumes termināļa darbību, katrs flatMap () elements nodrošina atsevišķu straumi. Pēdējā fāzē flatMap() metode pārveido visas straumes jaunā straumē. Iepriekš minētajā straumē mēs novērojam, ka tajā nav dublētu vērtību.
awt java
Izveidosim Java programmu un izmantosim flatMap() metodi.
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('Printer', 'Mouse', 'Keyboard', 'Motherboard'); List productlist2 = Arrays.asList('Scanner', 'Projector', 'Light Pen'); List productlist3 = Arrays.asList('Pen Drive', 'Charger', 'WIFI Adapter', 'Cooling Fan'); List productlist4 = Arrays.asList('CPU Cabinet', 'WebCam', 'USB Light', 'Microphone', 'Power cable'); 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('List Before Applying mapping and Flattening: '); //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 -> pList.stream()).collect(Collectors.toList()); System.out.println('List After Applying Mapping and Flattening Operation: '); //prints the new stream that we get after applying mapping and flattening System.out.println(flatMapList); } } </list></list>
Izvade:
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]
Tagad mēs esam sapratuši abas straumēšanas klases metodes. Tā kā mēs varam viegli norādīt galvenās atšķirības starp tām.
Stream.flatMap() Vs. Stream.map()
Šajā tabulā ir aprakstītas galvenās atšķirības starp Stream.flatMap() un Stream.map().
Stream.flatMap() | Stream.map() |
---|---|
Tas apstrādā straumes vērtību plūsmu. | Tas apstrādā vērtību plūsmu. |
Tas veic kartēšanu kopā ar saplacināšanu. | Tas veic tikai kartēšanu. |
Tas pārveido datus no straumes | Tas pārveido datus no straumes uz straumi. |
Tas izmanto kartēšanu viens pret daudziem. | Tas izmanto kartēšanu viens pret vienu. |
Tā kartētāja funkcija katrai ievades vērtībai rada vairākas vērtības (vērtību plūsmu). | Tā kartētāja funkcija katrai ievades vērtībai rada atsevišķas vērtības. |
Izmantojiet flatMap() metodi, ja kartētāja funkcija katrai ievades vērtībai rada vairākas vērtības. | Izmantojiet metodi map(), kad kartētāja funkcija katrai ievades vērtībai rada atsevišķas vērtības. |