logo

flatMap()-methode in Java 8

De Stroom API werd geïntroduceerd in Java 8 dat wordt gebruikt om de verzamelingen objecten te verwerken. Het kan worden gebruikt door het importeren van de java.util.stream pakket. In deze sectie bespreken we de Stream.flatMap() methode van de Stream API. Ook zullen we het hebben over de belangrijkste verschillen tussen de methoden Stream.flatMap() en Stream.map() in Java 8.

voeg een watermerk in het woord in
flatMap()-methode in Java 8

Voordat we naar het onderwerp gaan, zullen we eerst de Stream.map() methode. Omdat de flatMap() methode is gebaseerd op de kaart() methode.

Java Stream.map()-methode

De Stream.map() methode voert een tussenliggende bewerking uit met behulp van de mapper-functie. Het produceert voor elk element een nieuwe stroom. Het transformeert alle streams in één enkele stream om het resultaat te leveren. daarom wordt elk element van de stream omgezet in een nieuwe stream.

Syntaxis:

 Stream map(Function mapper) 

R: Het is een typeparameter die het elementtype van de nieuwe stream vertegenwoordigt.

kaartmaker: Het is een parameter die een niet-storende, staatloze functie is die op elk element moet worden toegepast.

Voorbeeld van de map()-methode

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

Beschouw de bovenstaande verklaring voor een kaart van de stroom . Het creëert een resulterende stream met behulp van de map(). In elke iteratie creëert map() een aparte stream met het resultaat door de mapper-functie uit te voeren. Eindelijk transformeert map() alle streams in één enkele stream.

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

Uitgang:

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

Java Stream.flatMap()-methode

In Java 8 Streams past de flatMap()-methode de werking toe als een mapper-functie en biedt een stroom elementwaarden. Het betekent dat bij elke iteratie van elk element de methode map() een afzonderlijke nieuwe stroom creëert. Door gebruik te maken van het afvlakkingsmechanisme worden alle stromen samengevoegd tot één resulterende stroom. Kortom, het wordt gebruikt om een ​​Stream of Stream om te zetten in een lijst met waarden.

Syntaxis:

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

De methode neemt een functie als argument. Het accepteert T als parameter en retourneert een stroom R.

R: Het is een typeparameter die het elementtype van de nieuwe stream vertegenwoordigt.

kaartmaker: Het is een parameter die een niet-storende, staatloze functie is die op elk element moet worden toegepast. Het produceert een stroom van nieuwe waarden.

Kort gezegd kunnen we zeggen dat de flatMap()-methode helpt bij het converteren Stroom naar Stroom . Het presteert afvlakking (plat of plat) en in kaart brengen (kaart), gelijktijdig. De Stream.flatMap() -methode combineert beide bewerkingen, d.w.z. flat en map.

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

Laten we de betekenis van afvlakking begrijpen.

Wat is afvlakking?

Afvlakking is het proces waarbij verschillende lijsten met lijsten worden geconverteerd en al die lijsten worden samengevoegd om één enkele lijst te maken die alle elementen uit alle lijsten bevat.

CSS-overgangsdekking

Voorbeeld van afvlakking

Beschouw de volgende lijsten met lijsten:

Vóór het afvlakken: [[1, 2, 3, 4], [7, 8, 9, 0], [5, 6], [12, 18, 19, 20, 17], [22]]

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

Voorbeeld van de flatMap()-methode

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

We kunnen een flatMap()-methode gebruiken op een stream met de mapper-functie List::stream. Bij het uitvoeren van de streamterminalbewerking levert elk element van flatMap() een afzonderlijke stream. In de laatste fase transformeert de flatMap()-methode alle streams in een nieuwe stream. In de bovenstaande stroom zien we dat deze geen dubbele waarden bevat.

levenscyclus van softwareontwikkeling

Laten we een Java-programma maken en de flatMap() -methode gebruiken.

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>

Uitgang:

 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] 

Nu hebben we beide methoden van de Stream-klasse begrepen. Omdat we gemakkelijk de belangrijkste verschillen tussen beide kunnen aangeven.

Stream.flatMap() versus. Stream.map()

De volgende tabel beschrijft de belangrijkste verschillen tussen Stream.flatMap() en Stream.map().

flatMap()-methode in Java 8
Stream.flatMap() Stream.map()
Het verwerkt de stroom met stroomwaarden. Het verwerkt de stroom van waarden.
Het voert mapping uit samen met afvlakking. Het voert alleen mapping uit.
Het transformeert gegevens van Streamstreamen. Het transformeert gegevens van Stream naar Stream.
Het maakt gebruik van One-To-Many-toewijzing. Er wordt gebruik gemaakt van één-op-één mapping.
De mapper-functie produceert meerdere waarden (stroom van waarden) voor elke invoerwaarde. De mapper-functie produceert afzonderlijke waarden voor elke invoerwaarde.
Gebruik de methode flatMap() wanneer de mapper-functie meerdere waarden produceert voor elke invoerwaarde. Gebruik de methode map() wanneer de mapper-functie voor elke invoerwaarde enkele waarden produceert.