The Prúd API bolo predstavené v r Java 8 ktorý sa používa na spracovanie zbierok predmetov. Dá sa použiť importovaním java.util.stream balík. V tejto časti budeme diskutovať o Stream.flatMap() metóda Stream API. Tiež budeme diskutovať o kľúčové rozdiely medzi metódami Stream.flatMap() a Stream.map() v jazyku Java 8.
zarovnať css obrázok
Predtým, ako prejdeme k téme, najprv pochopíme Stream.map() metóda. Pretože plochá mapa() metóda je založená na mapa() metóda.
Metóda Java Stream.map().
The Stream.map() metóda vykoná prechodnú operáciu pomocou funkcie mapovača. Vytvára nový prúd pre každý prvok. Transformuje všetky prúdy do jedného prúdu, aby poskytol výsledok. preto sa každý prvok prúdu skonvertuje na nový prúd.
Syntax:
Stream map(Function mapper)
R: Je to parameter typu, ktorý predstavuje typ prvku nového prúdu.
mapovač: Je to parameter, ktorý nezasahuje do bezstavovej funkcie, ktorá sa aplikuje na každý prvok.
Príklad metódy map().
List citylist = Arrays.asList('delhi', 'mumbai', 'hyderabad', 'ahmedabad', 'indore', 'patna'). stream(). map(String::toUpperCase).collect(Collectors.toList());
Zvážte vyššie uvedené vyhlásenie pre mapu Prúd . Vytvorí výsledný prúd pomocou map(). V každej iterácii vytvorí map() samostatný prúd s výsledkom vykonaním funkcie mapovača. Nakoniec map() transformuje všetky prúdy do jedného prúdu.
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); } }
Výkon:
Stream After applying the map() function: 24 90 134 38 174 4 18
Metóda Java Stream.flatMap().
In Java 8 Prúdy, metóda flatMap() aplikuje operáciu ako funkciu mapovača a poskytuje prúd hodnôt prvkov. Znamená to, že v každej iterácii každého prvku metóda map() vytvorí samostatný nový prúd. Pomocou mechanizmu sploštenia zlúči všetky prúdy do jedného výsledného prúdu. Stručne povedané, používa sa na prevod prúdu prúdu na zoznam hodnôt.
Syntax:
Stream flatMap(Function<? super T,? extends Stream> mapper)
Metóda berie funkciu ako argument. Prijíma T ako parameter a vracia prúd R.
R: Je to parameter typu, ktorý predstavuje typ prvku nového prúdu.
mapovač: Je to parameter, ktorý je nerušivou, bezstavovou funkciou, ktorá sa aplikuje na každý prvok. Vytvára prúd nových hodnôt.
V skratke môžeme povedať, že metóda flatMap() pomáha pri konverzii Prúd
flatMap() = Flattening (flat)+ mapping (map)
Poďme pochopiť význam sploštenia.
Čo je sploštenie?
Sploštenie je proces konverzie niekoľkých zoznamov zoznamov a zlúčenie všetkých týchto zoznamov, aby sa vytvoril jeden zoznam obsahujúci všetky prvky zo všetkých zoznamov.
triedenie vkladania java
Príklad sploštenia
Zvážte nasledujúce zoznamy:
Pred sploštením: [[1, 2, 3, 4], [7, 8, 9, 0], [5, 6], [12, 18, 19, 20, 17], [22]]
Po vyrovnaní: [1, 2, 3, 4, 7, 8, 9, 0, 5, 6, 12, 18, 19, 20, 17, 22]
Príklad metódy flatMap().
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());
Metódu flatMap() môžeme použiť na stream s mapovacou funkciou List::stream. Pri vykonávaní operácie prúdového terminálu poskytuje každý prvok flatMap() samostatný prúd. V záverečnej fáze metóda flatMap() transformuje všetky prúdy na nový prúd. Vo vyššie uvedenom prúde pozorujeme, že neobsahuje duplicitné hodnoty.
písmo gimp
Vytvorme si Java program a použijeme metódu 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('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>
Výkon:
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]
Teraz sme pochopili obe metódy triedy Stream. Keďže môžeme ľahko poukázať na kľúčové rozdiely medzi nimi.
Stream.flatMap() vs. Stream.map()
Nasledujúca tabuľka popisuje kľúčové rozdiely medzi Stream.flatMap() a Stream.map().
Stream.flatMap() | Stream.map() |
---|---|
Spracováva tok hodnôt prúdu. | Spracováva tok hodnôt. |
Vykonáva mapovanie spolu so sploštením. | Vykonáva iba mapovanie. |
Transformuje dáta zo streamu | Transformuje dáta zo streamu na stream. |
Používa mapovanie One-To-Many. | Používa mapovanie One-To-One. |
Jeho funkcia mapovača vytvára viacero hodnôt (prúd hodnôt) pre každú vstupnú hodnotu. | Funkcia mapovača vytvára jednotlivé hodnoty pre každú vstupnú hodnotu. |
Metódu flatMap() použite, keď funkcia mapovača vytvára viacero hodnôt pre každú vstupnú hodnotu. | Metódu map() použite, keď funkcia mapovača vytvára jednotlivé hodnoty pre každú vstupnú hodnotu. |