The Curent API-ul a fost introdus în Java 8 care este folosit pentru procesarea colecțiilor de obiecte. Poate fi folosit prin importul java.util.stream pachet. În această secțiune, vom discuta despre Stream.flatMap() metoda Stream API. De asemenea, vom discuta despre diferențe cheie între metoda Stream.flatMap() și Stream.map() din Java 8.
Comandă rapidă cu majuscule excel
Înainte de a trece la subiect, mai întâi, vom înțelege Stream.map() metodă. Deoarece flatMap() metoda se bazează pe Hartă() metodă.
Metoda Java Stream.map().
The Stream.map() metoda efectuează o operație intermediară folosind funcția mapper. Produce un nou flux pentru fiecare element. Transformă toate fluxurile într-un singur flux pentru a oferi rezultatul. prin urmare, fiecare element al fluxului este convertit într-un flux nou.
Sintaxă:
Stream map(Function mapper)
R: Este un parametru de tip care reprezintă tipul de element al noului flux.
cartograf: Este un parametru care nu interferează, o funcție fără stat de aplicat fiecărui element.
Exemplu al metodei map().
List citylist = Arrays.asList('delhi', 'mumbai', 'hyderabad', 'ahmedabad', 'indore', 'patna'). stream(). map(String::toUpperCase).collect(Collectors.toList());
Luați în considerare declarația de mai sus pentru o hartă a curent . Acesta creează un flux rezultat folosind map(). În fiecare iterație, map() creează un flux separat cu rezultatul executând funcția mapper. În cele din urmă, map() transformă toate fluxurile într-un singur flux.
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); } }
Ieșire:
Stream After applying the map() function: 24 90 134 38 174 4 18
Metoda Java Stream.flatMap().
În Java 8 fluxuri, metoda flatMap() aplică operarea ca funcție de mapare și oferă un flux de valori ale elementelor. Înseamnă că în fiecare iterație a fiecărui element metoda map() creează un flux nou separat. Prin utilizarea mecanismului de aplatizare, acesta îmbină toate fluxurile într-un singur flux rezultat. Pe scurt, este folosit pentru a converti un Stream of Stream într-o listă de valori.
Sintaxă:
Stream flatMap(Function<? super T,? extends Stream> mapper)
Metoda ia o funcție ca argument. Acceptă T ca parametru și returnează un flux de R.
R: Este un parametru de tip care reprezintă tipul de element al noului flux.
cartograf: Este un parametru care este o funcție apatridă, care nu interferează, care se aplică fiecărui element. Produce un flux de noi valori.
Pe scurt, putem spune că metoda flatMap() ajută la conversie Curent
flatMap() = Flattening (flat)+ mapping (map)
Să înțelegem sensul aplatizării.
Ce este aplatizarea?
Aplatizarea este procesul de conversie a mai multor liste de liste și de îmbinare a tuturor acestor liste pentru a crea o singură listă care să conțină toate elementele din toate listele.
șir.conține java
Exemplu de aplatizare
Luați în considerare următoarele liste de liste:
Înainte de aplatizare: [[1, 2, 3, 4], [7, 8, 9, 0], [5, 6], [12, 18, 19, 20, 17], [22]]
După aplatizare: [1, 2, 3, 4, 7, 8, 9, 0, 5, 6, 12, 18, 19, 20, 17, 22]
Exemplu al metodei 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());
Putem folosi o metodă flatMap() pe un flux cu funcția de cartografiere List::stream. La executarea operației de terminal de flux, fiecare element al flatMap() oferă un flux separat. În faza finală, metoda flatMap() transformă toate fluxurile într-un nou flux. În fluxul de mai sus, observăm că nu conține valori duplicate.
Să creăm un program Java și să folosim metoda 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>
Ieșire:
tostring în java
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]
Acum, am înțeles ambele metode ale clasei Stream. Deoarece putem sublinia cu ușurință diferențele cheie dintre ele.
Stream.flatMap() vs. Stream.map()
Următorul tabel descrie diferențele cheie dintre Stream.flatMap() și Stream.map().
Stream.flatMap() | Stream.map() |
---|---|
Procesează fluxul de valori ale fluxului. | Prelucrează fluxul de valori. |
Efectuează cartografierea împreună cu aplatizarea. | Efectuează doar cartografiere. |
Transformă datele din Stream | Transformă datele din flux în flux. |
Utilizează maparea One-To-Many. | Utilizează maparea One-To-One. |
Funcția sa de cartografiere produce mai multe valori (flux de valori) pentru fiecare valoare de intrare. | Funcția sa de cartografiere produce valori individuale pentru fiecare valoare de intrare. |
Utilizați metoda flatMap() când funcția de mapare produce mai multe valori pentru fiecare valoare de intrare. | Utilizați metoda map() atunci când funcția mapper produce valori individuale pentru fiecare valoare de intrare. |