Strumień w Javie
Wprowadzony w Javie 8 Stream API służy do przetwarzania kolekcji obiektów. Strumień w Javie to sekwencja obiektów obsługująca różne metody, które można potokować w celu uzyskania pożądanego rezultatu.
Użycie strumienia w Javie
Poniżej wymieniono zastosowania Stream w Javie:
- Stream API to sposób wyrażania i przetwarzania kolekcji obiektów.
- Umożliwiają nam wykonywanie operacji takich jak filtrowanie, mapowanie, redukcja i sortowanie.
Jak utworzyć strumień Java?
Tworzenie strumienia Java jest jednym z najbardziej podstawowych kroków przed rozważeniem funkcjonalności strumienia Java. Poniżej znajduje się składnia deklarowania strumienia Java.
Składnia
Stream stream;
Tutaj T jest klasą, obiektem lub typem danych, w zależności od deklaracji.
Funkcje strumienia Java
Funkcje strumienia Java są wymienione poniżej:
- Strumień nie jest strukturą danych, zamiast tego pobiera dane wejściowe z kolekcji, tablic lub kanałów we/wy.
- Strumienie nie zmieniają oryginalnej struktury danych, dostarczają jedynie wynik zgodnie z metodami potokowymi.
- Każda operacja pośrednia jest wykonywana leniwie i w rezultacie zwraca strumień, dlatego można potokować różne operacje pośrednie. Operacje terminalowe oznaczają koniec strumienia i zwracają wynik.
Różne operacje na strumieniach
Istnieją dwa typy operacji na strumieniach:
- Operacje pośrednie
- Zakończ operacje
Operacje pośrednie
Operacje pośrednie to typy operacji, w których wiele metod jest połączonych w rzędzie.
Charakterystyka operacji pośrednich
- Metody są ze sobą powiązane.
- Operacje pośrednie przekształcają strumień w inny strumień.
- Umożliwia koncepcję filtrowania, w której jedna metoda filtruje dane i po przetworzeniu przekazuje je innej metodzie.
Korzyści ze strumienia Java
Istnieją pewne korzyści, z powodu których używamy Stream w Javie, jak wspomniano poniżej:
- Nie przechowywać
- Potok funkcji
- Lenistwo
- Może być nieskończony
- Można pracować równolegle
- Można je tworzyć z kolekcji, tablic, linii plików, metod w strumieniu, IntStream itp.
Ważne operacje pośrednie
Poniżej wymieniono kilka operacji pośrednich:
1. mapa()
Metoda map służy do zwrócenia strumienia składającego się z wyników zastosowania danej funkcji do elementów tego strumienia.
List number = Arrays.asList(2,3,4,5); List square = number.stream().map(x->x*x).collect(Collectors.toList());
2. filtr()
Metoda filter służy do wybierania elementów zgodnie z predykatem przekazanym jako argument.
List names = Arrays.asList('Reflection','Collection','Stream'); List result = names.stream().filter(s->s.startsWith('S')).collect(Collectors.toList()); 3. posortowane()
Do sortowania strumienia używana jest metoda sorted.
List names = Arrays.asList('Reflection','Collection','Stream'); List result = names.stream().sorted().collect(Collectors.toList()); Operacje terminalowe
Operacje terminalowe to typ operacji, które zwracają wynik. Operacje te nie są dalej przetwarzane, po prostu zwracają końcową wartość wyniku.
Ważne operacje terminalowe
Poniżej wymieniono kilka operacji terminalowych:
1. zbieraj()
Metoda zbierania służy do zwrócenia wyniku operacji pośrednich wykonanych na strumieniu.
List number = Arrays.asList(2,3,4,5,3); Set square = number.stream().map(x->x*x).collect(Collectors.toSet());
2. dla każdego()
Metoda forEach służy do iteracji po każdym elemencie strumienia.
List number = Arrays.asList(2,3,4,5); number.stream().map(x->x*x).forEach(y->System.out.println(y));
3. zmniejsz()
Metoda redukcji służy do redukcji elementów strumienia do pojedynczej wartości. Metoda redukcji przyjmuje jako parametr BinaryOperator.
List number = Arrays.asList(2,3,4,5); int even = number.stream().filter(x->x%2==0).reduce(0,(ans,i)->odpowiedzi+i);
Tutaj zmiennej przypisuje się wartość początkową 0 i dodaje się do niej i.
Notatka: Operacje pośrednie działają w oparciu o koncepcję leniwej oceny, która zapewnia, że każda metoda zwraca stałą wartość (operacja terminalowa) przed przejściem do następnej metody.
Przykład strumienia Java
Jawa
// Java program to demonstrate> // the use of stream in java> import> java.util.*;> import> java.util.stream.*;> class> Demo {> > public> static> void> main(String args[])> > {> > // create a list of integers> > List number = Arrays.asList(> 2> ,> 3> ,> 4> ,> 5> );> > // demonstration of map method> > List square> > = number.stream()> > .map(x ->x * x)> > .collect(Collectors.toList());> > // create a list of String> > List names = Arrays.asList(> > 'Reflection'> ,> 'Collection'> ,> 'Stream'> );> > // demonstration of filter method> > List result> > = names.stream()> > .filter(s ->s.startsWith(> 'S'> ))> > .collect(Collectors.toList());> > > System.out.println(result);> > // demonstration of sorted method> > List show> > = names.stream()> > .sorted()> > .collect(Collectors.toList());> > > System.out.println(show);> > // create a list of integers> > List numbers> > = Arrays.asList(> 2> ,> 3> ,> 4> ,> 5> ,> 2> );> > // collect method returns a set> > Set squareSet> > = numbers.stream()> > .map(x ->x * x)> > .collect(Collectors.toSet());> > > System.out.println(squareSet);> > // demonstration of forEach method> > number.stream()> > .map(x ->x * x)> > .forEach(y ->System.out.println(y));> > // demonstration of reduce method> > int> even> > = number.stream()> > .filter(x ->x%> 2> ==> 0> )> > .reduce(> 0> , (ans, i) ->ans + i);> > System.out.println(even);> > }> }> |
Wyjście
[4, 9, 16, 25] [Stream] [Collection, Reflection, Stream] [16, 4, 9, 25] 4 9 16 25 6
Ważne punkty/obserwacje dotyczące strumienia Java
- Strumień składa się ze źródła, po którym następuje zero lub więcej metod pośrednich połączonych razem (potokowo) oraz metoda końcowa służąca do przetwarzania obiektów uzyskanych ze źródła zgodnie z opisanymi metodami.
- Strumień służy do obliczania elementów zgodnie z metodami potokowymi bez zmiany oryginalnej wartości obiektu.