logo

Metoda flatMap() v Javě 8

The Proud API bylo představeno v r Java 8 který se používá ke zpracování sbírek objektů. Lze jej použít importem java.util.stream balík. V této části budeme diskutovat o Stream.flatMap() metoda Stream API. Také budeme diskutovat o klíčové rozdíly mezi metodami Stream.flatMap() a Stream.map() v Javě 8.

řetězec v porovnání s javou
Metoda flatMap() v Javě 8

Než přejdeme k tématu, nejprve porozumíme Stream.map() metoda. Protože plochá mapa() metoda je založena na mapa() metoda.

Metoda Java Stream.map().

The Stream.map() metoda provádí přechodnou operaci pomocí funkce mapovače. Pro každý prvek vytvoří nový proud. Transformuje všechny proudy do jediného proudu, aby poskytl výsledek. proto se každý prvek proudu převede na nový proud.

Syntax:

 Stream map(Function mapper) 

R: Je to parametr typu, který představuje typ prvku nového proudu.

mapovač: Je to parametr, který je nerušící, bezstavová funkce, která se aplikuje na každý prvek.

Příklad metody map().

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

Zvažte výše uvedené tvrzení pro mapu proud . Vytvoří výsledný proud pomocí map(). V každé iteraci vytvoří map() samostatný proud s výsledkem provedením funkce mapovače. Nakonec map() transformuje všechny proudy do jediného proudu.

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ýstup:

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

Metoda Java Stream.flatMap().

v Jáva 8 Streams, metoda flatMap() aplikuje operaci jako funkci mapovače a poskytuje proud hodnot prvků. To znamená, že v každé iteraci každého prvku metoda map() vytvoří samostatný nový proud. Pomocí mechanismu zploštění sloučí všechny proudy do jediného výsledného proudu. Stručně řečeno, používá se k převodu Stream of Stream na seznam hodnot.

Syntax:

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

Metoda bere funkci jako argument. Přijímá T jako parametr a vrací proud R.

R: Je to parametr typu, který představuje typ prvku nového proudu.

mapovač: Je to parametr, který je nerušící, bezstavovou funkcí, která se aplikuje na každý prvek. Vytváří proud nových hodnot.

Stručně lze říci, že metoda flatMap() pomáhá při převodu Proud na Proud . Vystupuje zploštění (zploštit nebo zploštit) a mapování (mapa), současně. Metoda Stream.flatMap() kombinuje obě operace, tj. flat a map.

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

Pojďme pochopit význam zploštění.

Co je zploštění?

Zploštění je proces převodu několika seznamů seznamů a sloučení všech těchto seznamů za účelem vytvoření jediného seznamu obsahujícího všechny prvky ze všech seznamů.

rovná se metoda v Javě

Příklad zploštění

Zvažte následující seznamy:

Před zploštěním: [[1, 2, 3, 4], [7, 8, 9, 0], [5, 6], [12, 18, 19, 20, 17], [22]]

Po zploštění: [1, 2, 3, 4, 7, 8, 9, 0, 5, 6, 12, 18, 19, 20, 17, 22]

Příklad metody 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()); 

Můžeme použít metodu flatMap() na stream s mapovací funkcí List::stream. Při provádění operace terminálu proudu poskytuje každý prvek flatMap() samostatný proud. V závěrečné fázi metoda flatMap() transformuje všechny proudy do nového proudu. Ve výše uvedeném proudu pozorujeme, že neobsahuje duplicitní hodnoty.

Vytvořme Java program a použijeme metodu flatMap().

FlatMapExample.java

konverze typu java a casting
 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>

Výstup:

 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] 

Nyní jsme pochopili obě metody třídy Stream. Protože můžeme snadno poukázat na klíčové rozdíly mezi nimi.

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

Následující tabulka popisuje klíčové rozdíly mezi Stream.flatMap() a Stream.map().

Metoda flatMap() v Javě 8
Stream.flatMap() Stream.map()
Zpracovává proud hodnot proudu. Zpracovává tok hodnot.
Provádí mapování spolu se zploštěním. Provádí pouze mapování.
Transformuje data ze Streamudo streamu. Transformuje data z Stream na Stream.
Využívá mapování One-To-Many. Využívá mapování One-To-One.
Jeho mapovací funkce vytváří více hodnot (tok hodnot) pro každou vstupní hodnotu. Jeho mapovací funkce vytváří jednotlivé hodnoty pro každou vstupní hodnotu.
Použijte metodu flatMap(), když funkce mapování vytváří pro každou vstupní hodnotu více hodnot. Metodu map() použijte, když funkce mapování vytváří pro každou vstupní hodnotu jednu hodnotu.