De Strøm API ble introdusert i Java 8 som brukes til å behandle samlinger av objekter. Den kan brukes ved å importere java.util.stream pakke. I denne delen vil vi diskutere Stream.flatMap() metoden til Stream API. Vi vil også diskutere viktige forskjeller mellom Stream.flatMap()- og Stream.map()-metoden i Java 8.
hvor mange nuller i 1 milliard
Før vi går over til emnet, vil vi først forstå Stream.map() metode. Fordi det flatMap() metoden er basert på kart() metode.
Java Stream.map() Metode
De Stream.map() metoden utfører en mellomoperasjon ved å bruke kartleggingsfunksjonen. Det produserer en ny strøm for hvert element. Den forvandler alle strømmene til en enkelt strøm for å gi resultatet. Derfor blir hvert element i strømmen konvertert til en ny strøm.
Syntaks:
Stream map(Function mapper)
R: Det er en typeparameter som representerer elementtypen til den nye strømmen.
kartlegger: Det er en parameter som er ikke-forstyrrende, tilstandsløs funksjon som skal brukes på hvert element.
Eksempel på map()-metoden
List citylist = Arrays.asList('delhi', 'mumbai', 'hyderabad', 'ahmedabad', 'indore', 'patna'). stream(). map(String::toUpperCase).collect(Collectors.toList());
Vurder utsagnet ovenfor for et kart over strøm . Den lager en resulterende strøm ved å bruke map(). I hver iterasjon oppretter map() en egen strøm med resultatet ved å utføre mapper-funksjonen. Til slutt transformerer map() alle strømmer til en enkelt 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); } }
Produksjon:
Stream After applying the map() function: 24 90 134 38 174 4 18
Java Stream.flatMap()-metoden
I Java 8 Streams, flatMap()-metoden bruker operasjon som en kartleggingsfunksjon og gir en strøm av elementverdier. Det betyr at i hver iterasjon av hvert element oppretter map()-metoden en separat ny strøm. Ved å bruke utflatningsmekanismen slår den sammen alle strømmer til en enkelt resulterende strøm. Kort sagt, den brukes til å konvertere en Stream of Stream til en liste med verdier.
Syntaks:
Stream flatMap(Function<? super T,? extends Stream> mapper)
Metoden tar en funksjon som et argument. Den aksepterer T som en parameter og returnerer en strøm av R.
R: Det er en typeparameter som representerer elementtypen til den nye strømmen.
kartlegger: Det er en parameter som er en ikke-forstyrrende, tilstandsløs funksjon som skal brukes på hvert element. Det produserer en strøm av nye verdier.
Kort sagt kan vi si at flatMap()-metoden hjelper til med å konvertere Strøm
flatMap() = Flattening (flat)+ mapping (map)
La oss forstå betydningen av utflating.
Hva er utflating?
Utflating er prosessen med å konvertere flere lister med lister og slå sammen alle disse listene for å lage en enkelt liste som inneholder alle elementene fra alle listene.
konvertere et heltall til en streng
Eksempel på utflating
Vurder følgende lister med lister:
Før flating: [[1, 2, 3, 4], [7, 8, 9, 0], [5, 6], [12, 18, 19, 20, 17], [22]]
Etter utflating: [1, 2, 3, 4, 7, 8, 9, 0, 5, 6, 12, 18, 19, 20, 17, 22]
c#-bryter
Eksempel på flatMap()-metoden
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 bruke en flatMap()-metode på en strøm med mappefunksjonen List::stream. Ved utføring av strømterminaloperasjonen gir hvert element i flatMap() en separat strøm. I sluttfasen transformerer flatMap()-metoden alle strømmene til en ny strøm. I strømmen ovenfor observerer vi at den ikke inneholder dupliserte verdier.
La oss lage et Java-program og bruke flatMap()-metoden.
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>
Produksjon:
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]
Nå har vi forstått begge metodene til Stream-klassen. Siden vi enkelt kan peke ut de viktigste forskjellene mellom dem.
Stream.flatMap() vs. Stream.map()
Tabellen nedenfor beskriver de viktigste forskjellene mellom Stream.flatMap() og Stream.map().
Stream.flatMap() | Stream.map() |
---|---|
Den behandler strømmen av strømmens verdier. | Den behandler strømmen av verdier. |
Den utfører kartlegging sammen med utflating. | Den utfører kun kartlegging. |
Den transformerer data fra Stream | Den transformerer data fra Stream til Stream. |
Den bruker One-To-Many-kartlegging. | Den bruker en-til-en-kartlegging. |
Dens kartleggingsfunksjon produserer flere verdier (strøm av verdier) for hver inngangsverdi. | Dens kartleggingsfunksjon produserer enkeltverdier for hver inngangsverdi. |
Bruk flatMap()-metoden når mappefunksjonen produserer flere verdier for hver inngangsverdi. | Bruk map()-metoden når mapper-funksjonen produserer enkeltverdier for hver inngangsverdi. |