logo

Trasmetti in streaming flatMap() in Java con esempi

Stream flatMap (mappatore di funzioni) restituisce un flusso costituito dai risultati della sostituzione di ciascun elemento di questo flusso con il contenuto di un flusso mappato prodotto applicando la funzione di mappatura fornita a ciascun elemento. Stream flatMap (mapper di funzioni) è un file operazione intermedia . Queste operazioni sono sempre pigre. Le operazioni intermedie vengono richiamate su un'istanza di Stream e una volta terminata l'elaborazione, forniscono un'istanza di Stream come output.

Nota : Ogni flusso mappato viene chiuso dopo che i relativi contenuti sono stati inseriti in questo flusso. Se un flusso mappato è nullo, viene invece utilizzato un flusso vuoto.



flatMap() V/s carta geografica() :
1) carta geografica() prende uno Stream e lo trasforma in un altro Stream. Applica una funzione su ciascun elemento di Stream e memorizza il valore restituito nel nuovo Stream. Non appiattisce il flusso. Ma flatMap() è la combinazione di una mappa e di un'operazione flat, ovvero applica una funzione agli elementi e li appiattisce.
2) carta geografica() viene utilizzato solo per la trasformazione, ma flatMap() viene utilizzato sia per la trasformazione che per l'appiattimento.

Sintassi:

 < R>Flusso< R>flatMap(Funzione< ? super T, ? extends Stream< ? extends R>> mapper) dove R è il tipo di elemento del nuovo flusso. Stream è un'interfaccia e T è il tipo di elementi dello stream. mapper è una funzione senza stato che viene applicata a ciascun elemento e la funzione restituisce il nuovo flusso.>

Esempio 1 : Funzione flatMap() con funzione di mappatura fornita.








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

>

>

Produzione :

 5.6 7.4 4 1 2.3>

Esempio 2: Funzione flatMap() con l'operazione fornita di mappatura della stringa con il carattere nella posizione 2.

nome utente




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

>

>

Produzione :

operatori Java
 e G e g>

Come funziona flatMap()?

Come già discusso nel post, flatMap() è la combinazione di una mappa e di un'operazione flat, ovvero applica prima la funzione map e poi appiattisce il risultato. Consideriamo alcuni esempi per capire cosa significa esattamente appiattire un flusso.
Esempio 1 :
L'elenco prima dell'appiattimento:

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

L'elenco ha 2 livelli ed è composto da 3 piccoli elenchi. Dopo l'appiattimento, viene trasformato in una struttura a un livello come mostrato:

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

Esempio 2:
L'elenco prima dell'appiattimento:

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

L'elenco ha 3 livelli ed è composto da 4 piccoli elenchi. Dopo l'appiattimento, viene trasformato in una struttura a un livello come mostrato:

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

In breve, possiamo dire che se esiste a Flusso dell'elenco di << Tipo di dati >> prima dell'appiattimento, quindi applicando flatMap(), Flusso di << Tipo di dati >> viene restituito dopo l'appiattimento.
Applicazione :




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

>

>

Produzione :

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