De Ström API introducerades i Java 8 som används för att bearbeta samlingar av objekt. Det kan användas genom att importera java.util.stream paket. I det här avsnittet kommer vi att diskutera Stream.flatMap() metoden för Stream API. Vi kommer också att diskutera viktiga skillnader mellan Stream.flatMap()- och Stream.map()-metoden i Java 8.
bellford algoritm
Innan vi går till ämnet kommer vi först att förstå Stream.map() metod. Eftersom den flatMap() metoden är baserad på Karta() metod.
Java Stream.map() Metod
De Stream.map() metoden utför en mellanliggande operation genom att använda mapperfunktionen. Det producerar en ny ström för varje element. Den omvandlar alla strömmar till en enda ström för att ge resultatet. därför omvandlas varje element i strömmen till en ny ström.
Syntax:
Stream map(Function mapper)
R: Det är en typparameter som representerar elementtypen för den nya strömmen.
kartläggare: Det är en parameter som är icke-störande, tillståndslös funktion att tillämpa på varje element.
Exempel på metoden map()
List citylist = Arrays.asList('delhi', 'mumbai', 'hyderabad', 'ahmedabad', 'indore', 'patna'). stream(). map(String::toUpperCase).collect(Collectors.toList());
Betrakta ovanstående uttalande för en karta över ström . Den skapar en resulterande ström med hjälp av map(). I varje iteration skapar map() en separat ström med resultatet genom att köra mapparfunktionen. Äntligen omvandlar map() alla strömmar till en enda ström.
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); } }
Produktion:
Stream After applying the map() function: 24 90 134 38 174 4 18
Java Stream.flatMap()-metod
I Java 8 Streams, metoden flatMap() tillämpar operationen som en mapparfunktion och tillhandahåller en ström av elementvärden. Det betyder att i varje iteration av varje element skapar map()-metoden en separat ny ström. Genom att använda tillplattningsmekanismen slår den samman alla strömmar till en enda resulterande ström. Kort sagt, det används för att konvertera en Stream of Stream till en lista med värden.
Syntax:
Stream flatMap(Function<? super T,? extends Stream> mapper)
Metoden tar en funktion som ett argument. Den accepterar T som en parameter och returnerar en ström av R.
R: Det är en typparameter som representerar elementtypen för den nya strömmen.
kartläggare: Det är en parameter som är en icke-störande, tillståndslös funktion att tillämpa på varje element. Det producerar en ström av nya värderingar.
Kortfattat kan vi säga att metoden flatMap() hjälper till att konvertera Ström
flatMap() = Flattening (flat)+ mapping (map)
Låt oss förstå innebörden av att platta till.
Vad är tillplattning?
Tillplattning är processen att konvertera flera listor med listor och slå samman alla dessa listor för att skapa en enda lista som innehåller alla element från alla listor.
desc-tabell i mysql
Tillplattad exempel
Tänk på följande listor:
Innan tillplattning: [[1, 2, 3, 4], [7, 8, 9, 0], [5, 6], [12, 18, 19, 20, 17], [22]]
Efter tillplattning: [1, 2, 3, 4, 7, 8, 9, 0, 5, 6, 12, 18, 19, 20, 17, 22]
Exempel på metoden 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());
Vi kan använda en flatMap()-metod på en stream med mapparfunktionen List::stream. Vid exekvering av strömterminaloperationen tillhandahåller varje element i flatMap() en separat ström. I slutfasen omvandlar metoden flatMap() alla strömmar till en ny ström. I strömmen ovan observerar vi att den inte innehåller dubbletter av värden.
Låt oss skapa ett Java-program och använda metoden flatMap().
FlatMapExample.java
vad är bikupa
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>
Produktion:
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 har vi förstått båda metoderna för Stream-klassen. Eftersom vi enkelt kan peka ut de viktigaste skillnaderna mellan dem.
Stream.flatMap() vs. Stream.map()
Följande tabell beskriver de viktigaste skillnaderna mellan Stream.flatMap() och Stream.map().
Stream.flatMap() | Stream.map() |
---|---|
Den bearbetar strömmen av strömmens värden. | Den bearbetar strömmen av värden. |
Den utför kartläggning tillsammans med tillplattning. | Den utför endast mappning. |
Den omvandlar data från Stream | Den omvandlar data från Stream till Stream. |
Den använder en-till-många-mappning. | Den använder en-till-en-mappning. |
Dess mapper-funktion producerar flera värden (ström av värden) för varje ingångsvärde. | Dess mapper-funktion producerar enskilda värden för varje ingångsvärde. |
Använd metoden flatMap() när mapperfunktionen producerar flera värden för varje indatavärde. | Använd metoden map() när mapperfunktionen producerar enstaka värden för varje indatavärde. |