logo

Streamen Sie flatMap() in Java mit Beispielen

Stream flatMap (Funktionsmapper) gibt einen Stream zurück, der aus den Ergebnissen des Ersetzens jedes Elements dieses Streams durch den Inhalt eines zugeordneten Streams besteht, der durch Anwenden der bereitgestellten Zuordnungsfunktion auf jedes Element erstellt wurde. Stream flatMap(Function Mapper) ist ein Zwischenbetrieb . Diese Operationen sind immer faul. Zwischenvorgänge werden für eine Stream-Instanz aufgerufen und geben nach Abschluss ihrer Verarbeitung eine Stream-Instanz als Ausgabe aus.

Notiz : Jeder zugeordnete Stream wird geschlossen, nachdem sein Inhalt in diesem Stream platziert wurde. Wenn ein zugeordneter Stream null ist, wird stattdessen ein leerer Stream verwendet.



flatMap() V/s Karte() :
1) Karte() nimmt einen Stream und wandelt ihn in einen anderen Stream um. Es wendet eine Funktion auf jedes Element von Stream an und speichert den Rückgabewert im neuen Stream. Der Strom wird dadurch nicht abgeflacht. Aber flatMap() ist die Kombination aus einer Map- und einer Flat-Operation, d. h. es wendet eine Funktion auf Elemente an und reduziert sie gleichzeitig.
2) Karte() wird nur zur Transformation verwendet, flatMap() wird jedoch sowohl zur Transformation als auch zur Reduzierung verwendet.

Syntax :

 < R>Strom< R>flatMap(Funktion< ? super T, ? extends Stream< ? extends R>> Mapper), wobei R der Elementtyp des neuen Streams ist. Stream ist eine Schnittstelle und T ist der Typ der Stream-Elemente. Mapper ist eine zustandslose Funktion, die auf jedes Element angewendet wird und den neuen Stream zurückgibt.>

Beispiel 1 : flatMap()-Funktion mit bereitgestellter Mapping-Funktion.








// 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(num)).> >forEach(System.out::println);> >}> }>

>

>

Ausgabe :

 5.6 7.4 4 1 2.3>

Beispiel 2: flatMap()-Funktion mit bereitgestellter Operation zum Zuordnen einer Zeichenfolge zu einem Zeichen an Position 2.

Excel-Datei in Java lesen




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

>

>

Ausgabe :

 e G e g>

Wie funktioniert flatMap()?

Wie bereits im Beitrag besprochen, ist flatMap() die Kombination aus einer Karte und einer flachen Operation, d. h. es wendet zuerst die Kartenfunktion an und flacht dann das Ergebnis ab. Betrachten wir einige Beispiele, um zu verstehen, was genau das Abflachen eines Streams ist.
Beispiel 1 :
Die Liste vor dem Abflachen:

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

Die Liste hat 2 Ebenen und besteht aus 3 kleinen Listen. Nach dem Abflachen wird es wie gezeigt in eine einstufige Struktur umgewandelt:

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

Beispiel 2:
Die Liste vor dem Abflachen:

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

Die Liste hat 3 Ebenen und besteht aus 4 kleinen Listen. Nach dem Abflachen wird es wie gezeigt in eine einstufige Struktur umgewandelt:

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

Kurz gesagt können wir sagen, dass, wenn es eine gibt Stream der Liste von << Datentyp >> vor dem Reduzieren, dann beim Anwenden von flatMap(), Stream von << Datentyp >> wird nach dem Abflachen zurückgegeben.
Anwendung :

Java-Sammlungsframework




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

>

>

Ausgabe :

 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]>