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.
c++ konwertuje na ciąg
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);> >}> }> |
>
>
pobierz film z YouTube'a za pomocą VLC
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.