Srautas plokščias žemėlapis (funkcijų žemėlapis) grąžina srautą, susidedantį iš kiekvieno šio srauto elemento pakeitimo rezultatų susieto srauto, sukurto kiekvienam elementui taikant pateiktą atvaizdavimo funkciją, turiniu. Stream flatMap (funkcijų žemėlapis) yra tarpinė operacija . Šios operacijos visada yra tingios. Tarpinės operacijos iškviečiamos srauto egzemplioriuje, o baigus apdoroti, jos pateikia srauto egzempliorių kaip išvestį.
Pastaba: Kiekvienas susietas srautas uždaromas, kai jo turinys įtraukiamas į šį srautą. Jei susietas srautas yra nulinis, vietoj jo naudojamas tuščias srautas.
flatMap() V/s žemėlapis () :
1) žemėlapis () paima srautą ir paverčia jį kitu srautu. Kiekvienam srauto elementui taiko funkciją ir išsaugo grąžinimo vertę naujame sraute. Tai neišlygina upelio. Tačiau flatMap() yra žemėlapio ir plokščios operacijos derinys, ty taiko funkciją elementams ir juos išlygina.
2) žemėlapis () naudojamas tik transformavimui, bet flatMap() naudojamas ir transformacijai, ir išlyginimui.
Sintaksė:
< R>Srautas< R>flatMap (Funkcija< ? super T, ? extends Stream< ? extends R>> kartografas), kur R yra naujo srauto elemento tipas. Srautas yra sąsaja, o T yra srauto elementų tipas. Mapper yra funkcija be būsenos, kuri taikoma kiekvienam elementui ir funkcija grąžina naują srautą.>>1 pavyzdys: FlatMap() funkcija su pateikta atvaizdavimo funkcija.
// 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 ->Srautas.of(skaičius)).>> >}> }> |
>
Išvestis:
5.6 7.4 4 1 2.3>
2 pavyzdys: Funkcija flatMap() su pateikta atvaizdavimo eilutės su simboliu 2 padėtyje operacija.
javascript įspėjimo laukelis
// 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 ->>> 2>))).> >forEach(System.out::println);> >}> }> |
>
>
Išvestis:
e G e g>
Kaip veikia flatMap()?
Kaip jau buvo aptarta įraše, flatMap () yra žemėlapio ir plokščios operacijos derinys, ty pirmiausia taiko žemėlapio funkciją, o paskui išlygina rezultatą. Panagrinėkime keletą pavyzdžių, kad suprastume, kas yra srauto išlyginimas.
1 pavyzdys:
Sąrašas prieš išlyginimą:
[ [2, 3, 5], [7, 11, 13], [17, 19, 23] ]>
Sąrašas yra 2 lygių ir susideda iš 3 mažų sąrašų. Po išlyginimo jis paverčiamas vieno lygio struktūra, kaip parodyta:
[ 2, 3, 5, 7, 11, 13, 17, 19, 23 ]>
2 pavyzdys:
Sąrašas prieš išlyginimą:
[ ['G', 'E', 'E'], ['K', 'S', 'F'], ['O', 'R', 'G'], ['E', 'E', 'K', 'S'] ]>
Sąrašas turi 3 lygius ir susideda iš 4 mažų sąrašų. Po išlyginimo jis paverčiamas vieno lygio struktūra, kaip parodyta:
['G', 'E', 'E', 'K', 'S', 'F', 'O', 'R', 'G', 'E', 'E', 'K', 'S']>
Trumpai tariant, galime pasakyti, kad jei yra a << sąrašo srautas Duomenų tipas >> prieš išlyginimą, tada taikant flatMap(), Srautas << Duomenų tipas >> grąžinamas po išlyginimo.
Taikymas:
// 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);> >}> }> |
>
>
Išvestis:
Diana Ankudinova
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]>