Тхе Стреам АПИ је уведен у Јава 8 који се користи за обраду колекција објеката. Може се користити увозом јава.утил.стреам пакет. У овом одељку ћемо разговарати о Стреам.флатМап() метода Стреам АПИ-ја. Такође, разговараћемо о кључне разлике између Стреам.флатМап() и Стреам.мап() метода у Јави 8.
андроид процес ацоре
Пре него што пређемо на тему, прво ћемо разумети Стреам.мап() методом. Због флатМап() метода се заснива на Мапа() методом.
Јава Стреам.мап() Метод
Тхе Стреам.мап() метода врши посредну операцију користећи функцију мапирања. Он производи нови ток за сваки елемент. Он трансформише све токове у један ток да би обезбедио резултат. стога, сваки елемент тока се претвара у нови ток.
Синтакса:
Stream map(Function mapper)
Р: То је параметар типа који представља тип елемента новог тока.
мапер: То је параметар који је неометајућа функција без стања која се примењује на сваки елемент.
Пример метода мап().
List citylist = Arrays.asList('delhi', 'mumbai', 'hyderabad', 'ahmedabad', 'indore', 'patna'). stream(). map(String::toUpperCase).collect(Collectors.toList());
Размотрите горњу изјаву за мапу поток . Он креира резултујући ток користећи мапу(). У свакој итерацији, мап() креира посебан ток са резултатом извршавањем функције мапирања. Најзад, мап() трансформише све токове у један ток.
МапЕкампле.јава
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); } }
Излаз:
Stream After applying the map() function: 24 90 134 38 174 4 18
Јава Стреам.флатМап() Метод
Ин Јава 8 Стреамс, метода флатМап() примењује операцију као функцију мапирања и обезбеђује ток вредности елемената. То значи да у свакој итерацији сваког елемента метода мап() креира посебан нови ток. Користећи механизам спљоштења, он спаја све токове у један резултујући ток. Укратко, користи се за претварање Стреам оф Стреам у листу вредности.
Синтакса:
Stream flatMap(Function<? super T,? extends Stream> mapper)
Метод узима функцију као аргумент. Он прихвата Т као параметар и враћа ток Р.
Р: То је параметар типа који представља тип елемента новог тока.
мапер: То је параметар који је неометајућа функција без стања која се примењује на сваки елемент. Она производи ток нових вредности.
Укратко, можемо рећи да метода флатМап() помаже у конверзији Стреам
flatMap() = Flattening (flat)+ mapping (map)
Хајде да разумемо значење спљоштења.
Шта је спљоштење?
Заравњавање је процес претварања неколико листа листа и спајања свих тих листа да би се направила једна листа која садржи све елементе са свих листа.
Сједињене Америчке Државе колико градова
Пример спљоштења
Размотрите следеће листе листа:
Пре спљоштења: [[1, 2, 3, 4], [7, 8, 9, 0], [5, 6], [12, 18, 19, 20, 17], [22]]
После спљоштења: [1, 2, 3, 4, 7, 8, 9, 0, 5, 6, 12, 18, 19, 20, 17, 22]
Пример методе флатМап().
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());
Можемо користити метод флатМап() за ток са функцијом мапирања Лист::стреам. Приликом извршавања операције терминала тока, сваки елемент флатМап() обезбеђује посебан ток. У завршној фази, метода флатМап() трансформише све токове у нови ток. У горњем току, примећујемо да не садржи дупле вредности.
сцаннер јава
Хајде да направимо Јава програм и користимо метод флатМап().
ФлатМапЕкампле.јава
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>
Излаз:
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]
Сада смо разумели обе методе класе Стреам. Пошто лако можемо указати на кључне разлике међу њима.
Стреам.флатМап() Вс. Стреам.мап()
Следећа табела описује кључне разлике између Стреам.флатМап() и Стреам.мап().
Стреам.флатМап() | Стреам.мап() |
---|---|
Он обрађује ток вредности тока. | Обрађује ток вредности. |
Изводи мапирање заједно са изравнавањем. | Обавља само мапирање. |
Он трансформише податке из Стреам-а | Он трансформише податке из Стреам у Стреам. |
Користи мапирање један-према-више. | Користи мапирање један-на-један. |
Њена функција мапирања производи више вредности (ток вредности) за сваку улазну вредност. | Њена функција мапирања производи појединачне вредности за сваку улазну вредност. |
Користите метод флатМап() када функција мапирања производи више вредности за сваку улазну вредност. | Користите метод мап() када функција мапирања производи појединачне вредности за сваку улазну вредност. |