logo

Metoda flatMap() w Javie 8

The Strumień API zostało wprowadzone w Java 8 który jest używany do przetwarzania kolekcji obiektów. Można go użyć, importując plik java.util.stream pakiet. W tej części omówimy Stream.flatMap() metoda Stream API. Omówimy także kluczowe różnice między metodami Stream.flatMap() i Stream.map() w Javie 8.

„jaka” jest różnica między lwem a tygrysem
Metoda flatMap() w Javie 8

Zanim przejdziemy do tematu, najpierw zrozumiemy Strumień.map() metoda. Ponieważ płaskaMapa() metoda opiera się na mapa() metoda.

Metoda Java Stream.map().

The Strumień.map() Metoda wykonuje operację pośrednią przy użyciu funkcji mapującej. Tworzy nowy strumień dla każdego elementu. Przekształca wszystkie strumienie w jeden strumień, aby zapewnić wynik. dlatego każdy element strumienia jest konwertowany na nowy strumień.

Składnia:

 Stream map(Function mapper) 

R: Jest to parametr typu, który reprezentuje typ elementu nowego strumienia.

twórca map: Jest to parametr, który jest niezakłócającą, bezstanową funkcją, którą można zastosować do każdego elementu.

Przykład metody map().

 List citylist = Arrays.asList('delhi', 'mumbai', 'hyderabad', 'ahmedabad', 'indore', 'patna'). stream(). map(String::toUpperCase).collect(Collectors.toList()); 

Rozważ powyższe stwierdzenie dla mapy strumień . Tworzy wynikowy strumień za pomocą map(). W każdej iteracji map() tworzy oddzielny strumień z wynikami, wykonując funkcję mapującą. Wreszcie map() przekształca wszystkie strumienie w jeden strumień.

MapExample.java

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

Wyjście:

 Stream After applying the map() function: 24 90 134 38 174 4 18 

Metoda Java Stream.flatMap().

W Jawa 8. Metoda flatMap() stosuje operację jako funkcję mapującą i udostępnia strumień wartości elementów. Oznacza to, że w każdej iteracji każdego elementu metoda map() tworzy osobny, nowy strumień. Wykorzystując mechanizm spłaszczania, łączy wszystkie strumienie w jeden strumień wynikowy. Krótko mówiąc, służy do konwersji strumienia strumienia na listę wartości.

Składnia:

 Stream flatMap(Function<? super T,? extends Stream> mapper) 

Metoda przyjmuje funkcję jako argument. Akceptuje T jako parametr i zwraca strumień R.

R: Jest to parametr typu, który reprezentuje typ elementu nowego strumienia.

twórca map: Jest to parametr będący niezakłócającą, bezstanową funkcją, którą można zastosować do każdego elementu. Wytwarza strumień nowych wartości.

W skrócie można powiedzieć, że metoda flatMap() pomaga w konwersji Strumień Do Strumień . To działa spłaszczenie (płaskie lub spłaszczone) i mapowanie (mapa), jednocześnie. Metoda Stream.flatMap() łączy w sobie obie operacje tj. flat i map.

 flatMap() = Flattening (flat)+ mapping (map) 

Rozumiemy znaczenie spłaszczenia.

Co to jest spłaszczanie?

Spłaszczenie to proces konwertowania kilku list list i łączenia wszystkich tych list w celu utworzenia jednej listy zawierającej wszystkie elementy ze wszystkich list.

porównanie w Javie

Przykład spłaszczania

Rozważ następujące listy list:

Przed spłaszczeniem: [[1, 2, 3, 4], [7, 8, 9, 0], [5, 6], [12, 18, 19, 20, 17], [22]]

Po spłaszczeniu: [1, 2, 3, 4, 7, 8, 9, 0, 5, 6, 12, 18, 19, 20, 17, 22]

Przykład metody flatMap().

 List country = Stream.of(Arrays.asList(&apos;Colombia&apos;, &apos;Finland&apos;, &apos;Greece&apos;, &apos;Iceland&apos;, &apos;Liberia&apos;, &apos;Mali&apos;, &apos;Mauritius&apos;), Arrays.asList(&apos;Peru&apos;, &apos;Serbia&apos;, &apos;Singapore&apos;, &apos;Turkey&apos;, &apos;Uzbekistan&apos;, &apos;Yemen&apos;, &apos;Zimbabwe&apos;, &apos;Greece&apos;, &apos;Iceland&apos;)).flatMap(List::stream) .collect(Collectors.toList()); 

Możemy użyć metody flatMap() na strumieniu za pomocą funkcji mapującej List::stream. Podczas wykonywania operacji terminala strumieniowego każdy element flatMap() udostępnia oddzielny strumień. W końcowej fazie metoda flatMap() przekształca wszystkie strumienie w nowy strumień. W powyższym strumieniu obserwujemy, że nie zawiera on zduplikowanych wartości.

Stwórzmy program w Javie i użyjmy metody flatMap().

FlatMapExample.java

 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(&apos;Printer&apos;, &apos;Mouse&apos;, &apos;Keyboard&apos;, &apos;Motherboard&apos;); List productlist2 = Arrays.asList(&apos;Scanner&apos;, &apos;Projector&apos;, &apos;Light Pen&apos;); List productlist3 = Arrays.asList(&apos;Pen Drive&apos;, &apos;Charger&apos;, &apos;WIFI Adapter&apos;, &apos;Cooling Fan&apos;); List productlist4 = Arrays.asList(&apos;CPU Cabinet&apos;, &apos;WebCam&apos;, &apos;USB Light&apos;, &apos;Microphone&apos;, &apos;Power cable&apos;); 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(&apos;List Before Applying mapping and Flattening: 
&apos;); //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 -&gt; pList.stream()).collect(Collectors.toList()); System.out.println(&apos;List After Applying Mapping and Flattening Operation: 
&apos;); //prints the new stream that we get after applying mapping and flattening System.out.println(flatMapList); } } </list></list>

Wyjście:

 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] 

Teraz poznaliśmy obie metody klasy Stream. Ponieważ z łatwością możemy wskazać kluczowe różnice między nimi.

wysokość przesunięcia

Stream.flatMap() vs. Strumień.map()

W poniższej tabeli opisano najważniejsze różnice między Stream.flatMap() i Stream.map().

Metoda flatMap() w Javie 8
Stream.flatMap() Strumień.map()
Przetwarza strumień wartości strumienia. Przetwarza strumień wartości.
Wykonuje mapowanie wraz ze spłaszczaniem. Wykonuje jedynie mapowanie.
Przekształca dane ze strumieniado strumienia. Przekształca dane ze strumienia na strumień.
Wykorzystuje mapowanie jeden do wielu. Wykorzystuje mapowanie jeden do jednego.
Jego funkcja mapująca generuje wiele wartości (strumień wartości) dla każdej wartości wejściowej. Jej funkcja mapująca generuje pojedyncze wartości dla każdej wartości wejściowej.
Metody flatMap() należy używać, gdy funkcja mapująca generuje wiele wartości dla każdej wartości wejściowej. Metody map() należy używać, gdy funkcja mapująca generuje pojedyncze wartości dla każdej wartości wejściowej.