Stream API, představené v Javě 8, se používá ke zpracování kolekcí objektů. Proud v Javě je posloupnost objektů, které podporují různé metody, které mohou být zřetězeny k dosažení požadovaného výsledku.
Použití Stream v Javě
Níže jsou uvedena použití Stream v Javě:
- Stream API je způsob, jak vyjádřit a zpracovat kolekce objektů.
- Umožněte nám provádět operace jako filtrování, mapování, zmenšování a řazení.
Jak vytvořit Java Stream?
Vytvoření Java Stream je jedním z nejzákladnějších kroků před zvažováním funkcí Java Stream. Níže je uvedena syntaxe, jak deklarovat Java Stream.
Syntax
Stream stream;>
Zde T je buď třída, objekt nebo datový typ v závislosti na deklaraci.
Funkce Java Stream
Vlastnosti Java streamu jsou uvedeny níže:
- Proud není datová struktura, místo toho přijímá vstup z kolekcí, polí nebo I/O kanálů.
- Streamy nemění původní datovou strukturu, poskytují pouze výsledek podle zřetězených metod.
- Každá mezioperační operace je prováděna líně a jako výsledek vrací proud, takže mohou být zřetězeny různé mezioperační operace. Terminálové operace označují konec proudu a vrací výsledek.
Různé operace na proudech
Ve streamech existují dva typy operací:
- Mezilehlé operace
- Ukončit operace
Mezilehlé operace

Mezilehlé operace jsou typy operací, ve kterých je několik metod zřetězeno za sebou.
Charakteristika mezioperačních operací
- Metody jsou spojeny dohromady.
- Mezilehlé operace transformují proud na jiný proud.
- Umožňuje koncept filtrování, kdy jedna metoda filtruje data a po zpracování je předává jiné metodě.
Výhoda Java Stream
Existují některé výhody, kvůli kterým používáme Stream v Javě, jak je uvedeno níže:
- Žádné úložiště
- Pipeline of Functions
- Lenost
- Může být nekonečný
- Lze paralelizovat
- Lze vytvořit z kolekcí, polí, řádků souborů, metod ve streamu, IntStream atd.
Důležité přechodné operace
Níže je uvedeno několik přechodných operací:
1. mapa()
Metoda map slouží k vrácení proudu sestávajícího z výsledků aplikace dané funkce na prvky tohoto proudu.
List number = Arrays.asList(2,3,4,5); List square = number.stream().map(x->x*x).collect(Collectors.toList());>
2. filtr()
Metoda filtru se používá k výběru prvků podle predikátu předaného jako argument.
List names = Arrays.asList('Reflection','Collection','Stream'); List result = names.stream().filter(s->s.startsWith('S')).collect(Collectors.toList());> 3. seřazeno()
Metoda třídění se používá k řazení proudu.
List names = Arrays.asList('Reflection','Collection','Stream'); List result = names.stream().sorted().collect(Collectors.toList());> Terminálové operace
Terminálové operace jsou typem operací, které vracejí výsledek. Tyto operace nejsou dále zpracovávány, pouze vrací konečnou výslednou hodnotu.
Důležité operace terminálu
Níže je uvedeno několik terminálových operací:
1. sbírat()
Metoda shromažďování se používá k vrácení výsledku mezioperačních operací provedených na toku.
List number = Arrays.asList(2,3,4,5,3); Set square = number.stream().map(x->x*x).collect(Collectors.toSet());>
2. forEach()
Metoda forEach se používá k iteraci přes každý prvek proudu.
List number = Arrays.asList(2,3,4,5); number.stream().map(x->x*x).forEach(y->System.out.println(y));>
3. snížit()
Metoda redukce se používá k redukci prvků proudu na jednu hodnotu. Metoda snížení bere jako parametr BinaryOperator.
List number = Arrays.asList(2,3,4,5); int even = number.stream().filter(x->x%2==0).reduce(0,(ans,i)-> ans+i);>
Zde je proměnné ans přiřazena 0 jako počáteční hodnota a je k ní přidáno i.
Poznámka: Intermediate Operations běží na základě konceptu Lazy Evaluation, který zajišťuje, že každá metoda vrátí pevnou hodnotu (terminální operace) před přechodem na další metodu.
algoritmus mergesort
Příklad Java Stream
Jáva
// 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);> >}> }> |
>
>
Výstup
[4, 9, 16, 25] [Stream] [Collection, Reflection, Stream] [16, 4, 9, 25] 4 9 16 25 6>
Důležité body/pozorování Java Stream
- Proud se skládá ze zdroje, za kterým následuje nula nebo více mezilehlých metod kombinovaných dohromady (zřetězených) a koncové metody pro zpracování objektů získaných ze zdroje podle popsaných metod.
- Proud se používá k výpočtu prvků podle zřetězených metod bez změny původní hodnoty objektu.