logo

flatMap() -menetelmä Java 8:ssa

The Striimaa API otettiin käyttöön vuonna Java 8 jota käytetään esinekokoelmien käsittelemiseen. Sitä voidaan käyttää tuomalla java.util.stream paketti. Tässä osiossa keskustelemme Stream.flatMap() Stream API:n menetelmä. Lisäksi keskustelemme tärkeimmät erot Stream.flatMap()- ja Stream.map()-menetelmien välillä Java 8:ssa.

hakukone ja esimerkkejä
flatMap() -menetelmä Java 8:ssa

Ennen kuin siirrymme aiheeseen, ymmärrämme ensin Stream.map() menetelmä. Koska flatMap() menetelmä perustuu kartta() menetelmä.

Java Stream.map() -menetelmä

The Stream.map() menetelmä suorittaa välioperaation käyttämällä kartoitustoimintoa. Se tuottaa uuden virran jokaiselle elementille. Se muuntaa kaikki virrat yhdeksi streamiksi tuloksen saamiseksi. siksi jokainen virran elementti muunnetaan uudeksi virraksi.

Syntaksi:

 Stream map(Function mapper) 

R: Se on tyyppiparametri, joka edustaa uuden virran elementtityyppiä.

kartoittaja: Se on parametri, joka on häiritsemätön, tilaton funktio, jota sovelletaan jokaiseen elementtiin.

Esimerkki map()-menetelmästä

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

Harkitse yllä olevaa lausuntoa karttaa varten virta . Se luo tuloksena olevan virran käyttämällä karttaa (). Jokaisessa iteraatiossa map() luo tuloksella erillisen virran suorittamalla kartoitusfunktion. Lopulta map() muuntaa kaikki virrat yhdeksi streamiksi.

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

Lähtö:

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

Java Stream.flatMap() -menetelmä

Sisään Java 8 Streams, flatMap()-menetelmä käyttää operaatiota kartoitusfunktiona ja tarjoaa elementtiarvojen virran. Se tarkoittaa, että jokaisen elementin jokaisessa iteraatiossa map()-menetelmä luo erillisen uuden virran. Tasoitusmekanismia käyttämällä se yhdistää kaikki virrat yhdeksi tulokseksi. Lyhyesti sanottuna sitä käytetään muuttamaan Stream of Stream arvoluetteloksi.

Syntaksi:

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

Menetelmä ottaa funktion argumenttina. Se hyväksyy T:n parametriksi ja palauttaa R-virran.

R: Se on tyyppiparametri, joka edustaa uuden virran elementtityyppiä.

kartoittaja: Se on parametri, joka on häiritsemätön, tilaton funktio, jota sovelletaan jokaiseen elementtiin. Se tuottaa virran uusia arvoja.

Lyhyesti sanottuna voimme sanoa, että flatMap()-menetelmä auttaa muuntamisessa Striimaa kohtaan Striimaa . Se suorittaa litistäminen (tasainen tai litistetty) ja kartoitus (kartta), samanaikaisesti. Stream.flatMap()-menetelmä yhdistää molemmat toiminnot eli flat ja map.

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

Ymmärrämme tasoittamisen merkityksen.

Mitä on litistäminen?

Tasoitus on prosessi, jossa muunnetaan useita luetteloita ja yhdistetään kaikki luettelot yhdeksi luetteloksi, joka sisältää kaikki elementit kaikista luetteloista.

nopea lajittelu java

Tasoitus esimerkki

Harkitse seuraavia luetteloita:

Ennen tasoitusta: [[1, 2, 3, 4], [7, 8, 9, 0], [5, 6], [12, 18, 19, 20, 17], [22]]

Tasoituksen jälkeen: [1, 2, 3, 4, 7, 8, 9, 0, 5, 6, 12, 18, 19, 20, 17, 22]

Esimerkki flatMap()-menetelmästä

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

Voimme käyttää flatMap()-menetelmää virrassa kartoitusfunktiolla List::stream. Virtauspäätetoimintoa suoritettaessa jokainen flatMap():n elementti tarjoaa erillisen virran. Viimeisessä vaiheessa flatMap()-menetelmä muuttaa kaikki virrat uudeksi virraksi. Yllä olevassa virrassa havaitsemme, että se ei sisällä päällekkäisiä arvoja.

Luodaan Java-ohjelma ja käytämme flatMap()-metodia.

kuinka muuntaa kokonaisluku merkkijonoksi javassa

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>

Lähtö:

 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] 

Nyt olemme ymmärtäneet molemmat Stream-luokan menetelmät. Koska voimme helposti osoittaa tärkeimmät erot niiden välillä.

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

Seuraavassa taulukossa kuvataan tärkeimmät erot Stream.flatMap() ja Stream.map() välillä.

flatMap() -menetelmä Java 8:ssa
Stream.flatMap() Stream.map()
Se käsittelee virran arvojen virran. Se käsittelee arvovirtaa.
Se suorittaa kartoitusta yhdessä tasoituksen kanssa. Se suorittaa vain kartoituksen.
Se muuntaa tiedot Streamistavirtaan. Se muuntaa tiedot streamista streamiin.
Se käyttää yhdestä moneen kartoitusta. Se käyttää yksi-yhteen-kartoitusta.
Sen kartoitustoiminto tuottaa useita arvoja (arvovirran) jokaiselle syötearvolle. Sen kartoitustoiminto tuottaa yksittäisiä arvoja kullekin tuloarvolle.
Käytä flatMap()-menetelmää, kun kartoitusfunktio tuottaa useita arvoja kullekin syötearvolle. Käytä map()-menetelmää, kun kartoitusfunktio tuottaa yksittäisiä arvoja kullekin syötearvolle.