logo

Stream flatMap() i Java med eksempler

Stream flatMap (Funksjonskartlegger) returnerer en strøm som består av resultatene av å erstatte hvert element i denne strømmen med innholdet i en kartlagt strøm produsert ved å bruke den angitte kartfunksjonen på hvert element. Stream flatMap(Function Mapper) er en mellomoperasjon . Disse operasjonene er alltid late. Mellomliggende operasjoner påkalles på en Stream-forekomst, og etter at de er ferdige med behandlingen, gir de en Stream-forekomst som utdata.

Merk : Hver kartlagt strøm stenges etter at innholdet er plassert i denne strømmen. Hvis en kartlagt strøm er null, brukes en tom strøm i stedet.



flatMap() V/s kart() :
1) kart() tar en strøm og transformerer den til en annen strøm. Den bruker en funksjon på hvert element i Stream og lagrer returverdi i ny Stream. Det flater ikke ut strømmen. Men flatMap() er kombinasjonen av et kart og en flat operasjon, dvs. den bruker en funksjon på elementer i tillegg til å flate dem ut.
2) kart() brukes kun til transformasjon, men flatMap() brukes til både transformasjon og flatting.

Syntaks:

 < R>Strøm< R>flatMap(Funksjon< ? super T, ? extends Stream< ? extends R>> mapper) hvor R er elementtypen til den nye strømmen. Stream er et grensesnitt og T er typen strømelementer. mapper er en tilstandsløs funksjon som brukes på hvert element og funksjonen returnerer den nye strømmen.>

Eksempel 1: flatMap() funksjon med medfølgende kartfunksjon.








// Java code for Stream flatMap> // (Function mapper) to get a stream by> // replacing the stream with a mapped> // stream by applying the provided mapping function.> import> java.util.*;> import> java.util.stream.Stream;> > class> GFG {> > >// Driver code> >public> static> void> main(String[] args)> >{> > >// Creating a List of Strings> >List list = Arrays.asList(>'5.6'>,>'7.4'>,>'4'>,> >'1'>,>'2.3'>);> > >// Using Stream flatMap(Function mapper)> >list.stream().flatMap(num ->Stream.of(antall)).> >forEach(System.out::println);> >}> }>

>

>

Utgang:

 5.6 7.4 4 1 2.3>

Eksempel 2: flatMap()-funksjon med medfølgende operasjon av tilordningsstreng med tegn i posisjon 2.

hva xd betyr




// Java code for Stream flatMap> // (Function mapper) to get a stream by> // replacing the stream with a mapped> // stream by applying the provided mapping function.> import> java.util.*;> import> java.util.stream.Stream;> > class> GFG {> > >// Driver code> >public> static> void> main(String[] args)> >{> > >// Creating a List of Strings> >List list = Arrays.asList(>'Geeks'>,>'GFG'>,> >'techcodeview.com'>,>'gfg'>);> > >// Using Stream flatMap(Function mapper)> >list.stream().flatMap(str ->> >Stream.of(str.charAt(>2>))).> >forEach(System.out::println);> >}> }>

>

>

Utgang:

 e G e g>

Hvordan fungerer flatMap()?

Som allerede diskutert i innlegget at flatMap() er kombinasjonen av et kart og en flat operasjon, det vil si at den først bruker kartfunksjonen og deretter flater ut resultatet. La oss se på noen eksempler for å forstå nøyaktig hva utflating av en bekk er.
Eksempel 1:
Listen før utflating:

 [ [2, 3, 5], [7, 11, 13], [17, 19, 23] ]>

Listen har 2 nivåer og består av 3 små lister. Etter flating blir den forvandlet til en nivåstruktur som vist:

 [ 2, 3, 5, 7, 11, 13, 17, 19, 23 ]>

Eksempel 2:
Listen før utflating:

 [ ['G', 'E', 'E'], ['K', 'S', 'F'], ['O', 'R', 'G'], ['E', 'E', 'K', 'S'] ]>

Listen har 3 nivåer og består av 4 små lister. Etter flating blir den forvandlet til en nivåstruktur som vist:

 ['G', 'E', 'E', 'K', 'S', 'F', 'O', 'R', 'G', 'E', 'E', 'K', 'S']>

Kort sagt kan vi si at hvis det er en Strøm av Liste over << Data-type >> før flating, deretter ved bruk av flatMap(), Strøm av << Data-type >> returneres etter utflating.
Applikasjon :




systemprogramvare
// Java code for Stream flatMap(Function mapper)> import> java.util.*;> import> java.util.stream.Collectors;> > class> GFG> {> >// Driver code> >public> static> void> main(String[] args)> >{> >// Creating a list of Prime Numbers> >List PrimeNumbers = Arrays.asList(>5>,>7>,>11>,>13>);> > >// Creating a list of Odd Numbers> >List OddNumbers = Arrays.asList(>1>,>3>,>5>);> > >// Creating a list of Even Numbers> >List EvenNumbers = Arrays.asList(>2>,>4>,>6>,>8>);> > >List listOfListofInts => >Arrays.asList(PrimeNumbers, OddNumbers, EvenNumbers);> > >System.out.println(>'The Structure before flattening is : '> +> >listOfListofInts);> > >// Using flatMap for transformating and flattening.> >List listofInts = listOfListofInts.stream()> >.flatMap(list ->list.stream())>> >.collect(Collectors.toList());> > >System.out.println(>'The Structure after flattening is : '> +> >listofInts);> >}> }>

>

>

Utgang:

 The Structure before flattening is : [[5, 7, 11, 13], [1, 3, 5], [2, 4, 6, 8]] The Structure after flattening is : [5, 7, 11, 13, 1, 3, 5, 2, 4, 6, 8]>