Všetko, čo potrebujete vedieť o streame v Jave



Tento článok vám predstaví Streamovanie v Jave, balík nedávno predstavený v Jave, a podrobné vysvetlenie toho, čo dokáže.

Nový ďalší balík v prostredí Java 8, známy ako java.util.stream bol pridaný pre používateľom efektívny programovací zážitok. Prúd možno definovať ako postupnosť objektov podporujúcich viac metód. V tomto článku by sme chceli preskúmať Stream in

V tomto článku sa budeme zaoberať nasledujúcimi ukazovateľmi,





Skôr ako začneme s týmto článkom o Streamovaní v Jave, pozrime sa na niektoré dôležité funkcie,

Streamovanie v Jave: Funkcie

  • Stream nie je dátovou štruktúrou a neukladá prvky. Odbery, polia alebo I / O kanály sú miesto, odkiaľ berie vstup.
  • Po vykonaní operácií s ním zdroj toku zostane nezmenený. Napríklad filtrovanie streamu jednoducho vytvorí nový stream bez filtrovaných prvkov, namiesto úpravy pôvodného streamu.
  • Streamovanie podporuje agregačné operácie, ako je filtrovanie, redukcia, zhoda, hľadanie atď.
  • Lenivosť možno považovať za vlastnosť streamu, pretože kódy sa vyhodnocujú iba v prípade potreby.
  • Návštevu prvkov nachádzajúcich sa v prúde je možné vykonať iba raz počas životnosti prúdu. Musí sa vytvoriť nový stream, aby sa znova navštívili rovnaké prvky, ktoré sa nachádzajú v zdroji.

Pokračujeme týmto článkom o Streamovaní v Jave



Generujú sa prúdy

Prúdy je možné generovať nasledujúcimi spôsobmi:

  • Prúd() - Vráti sa sekvenčný prúd.Zbierkasa považuje za zdroj.
  • parallelStream () - vráti sa paralelný tok. Zbierka sa považuje za zdroj.
Zoznam reťazcov = Arrays.asList ('Hello', '', 'Hi', 'Hola', 'Bonjour', '', 'Namaste') Zoznam filtrovaný = strings.stream (). Filter (string ->! String. isEmpty ()). collect (Collectors.toList ())

Pokračujeme týmto článkom o Streamovaní v Jave

cloudera certifikovaný administrátor pre apache hadoop

Operácie s prúdmi:

Stredné operácie:

mapa



Prvky prítomné v kolekcii je možné mapovať na ďalšie objekty podľa predikátu predaného ako argument. Nasledujúci príklad sa používa na zobrazenie jedinečných štvorcov čísel pomocou metódy mapy.

List num = Arrays.asList (5,4,4,2,3,3) List squares = num.stream (). Map (y -> y * y) .distinct (). Collect (Collectors.toList ())

filter

Touto metódou je možné odstrániť prvky na základe kritérií.

Názov zoznamu = Arrays.asList ('Sobota', 'Nedeľa', 'Štvrtok') Zoznam res = name.stream (). Filter (s-> s.startsWith ('S')). Collect (Collectors.toList () )

zoradené

Stream je možné triediť pomocou tejto metódy.

Názov zoznamu = Arrays.asList ('Sobota', 'Nedeľa', 'Štvrtok') Zoznam res = name.stream (). Triedené (). Collect (Collectors.toList ())

Stream v Jave: Prevádzka terminálu:

zbierať

Výsledok spracovania na prvkoch toku je možné kombinovať pomocou operácie zhromažďovania.

List num = Arrays.asList (4,3,2,5,6) Set res = num.stream (). Map (y-> y * y) .collect (Collectors.toSet ())

pre každý

Táto metóda sa používa na iteráciu cez každý prvok prítomný v streame.

Zoznam num = Arrays.asList (4,3,2,5) num.stream (). Map (x-> x * x). ForEach (y-> System.out.println (y))

zmenšiť

Pomocou tejto metódy je možné prvky toku znížiť na jednu hodnotu.

Zoznam num = Arrays.asList (4,3,2,5) int even = num.stream (). Filter (x-> x% 2 == 0). Redukovat (0, (res, i) -> res + i)

Premennej res sa pôvodne priradí hodnota 0 a pridá sa k nej i.

Pokračujeme týmto článkom o Streamovaní v Jave

Filtrovanie

Kód je možné filtrovať pomocou metódy streamu. V nasledujúcom príklade sa cena nástrojov odfiltruje.

import java.util. * import java.util.stream.Collectors class Nástroj {int num Názov reťazca float price public Instrument (int num, Názov reťazca, float price) {this.num = num this.name = pomenovať this.price = cena}} test verejnej triedy {public static void main (String [] args) {List instrumentsList = new ArrayList () // Adding Products instrumentsList.add (new Instrument (1, 'Guitar', 15000f)) instrumentsList.add (new Instrument (2, „Piano“, 18000f)) instrumentsList.add (nový nástroj (3, „flauta“, 15000f)) instrumentsList.add (nový inštrument (4, „bicie“, 48000f)) instrumentsList.add (nový nástroj ( 5, 'Ukulele', 32000f)) List InstrumentPriceList2 = instrumentsList.stream () .filter (p -> p.price> 30000) // filtrovanie dát .map (p-> p.price) // načítanie ceny .collect ( Collectors.toList ()) // zhromažďovanie ako zoznam System.out.println (InstrumentPriceList2)}}
 Výkon: 

[48000,0; 32000,0]

Pokračujeme týmto článkom o Streamovaní v Jave

Iterácia:

Iteráciu je možné vykonať pomocou prúdu v Jave.

import java.util.stream. * public class Test {public static void main (String [] args) {Stream.iterate (1, element-> element + 1) .filter (element-> element% 4 == 0). limit (6) .forEach (System.out :: println)}}

Výkon:

triediť pole v c ++

4

8

12

16

dvadsať

24

Pozrime sa na ďalší príklad, ako efektívnejšie porozumieť konceptu Stream v Jave.

Príklad:

import java.util. * import java.util.stream. * verejná trieda Test {public static void main (String args []) {// vytvorenie zoznamu celých čísel Zoznam num = Arrays.asList (6,7,8,9 ) // pomocou metódy mapy List squares = num.stream (). map (y -> y * y). collect (Collectors.toList ()) System.out.println (štvorce) // vytvorenie zoznamu String List days = Arrays.asList ('Friday', 'Saturday', 'Sunday') // metóda filtrovania Zoznam res = dní .stream (). filter (s-> s.startsWith ('S')). collect (Collectors.toList ()) System.out.println (res) // triedená metóda Zobrazenie zoznamu = days.stream (). triedené (). collect (Collectors.toList ()) System.out.println (display) / / vytvorenie zoznamu celých čísel Číslo zoznamu = Arrays.asList (6,9,5,7,1) // metóda collect vráti sadu Set sqSet = number.stream (). map (y-> y * y) .collect (Collectors.toSet ()) System.out.println (sqSet) // forEach method num.stream (). Map (y-> y * y) .forEach (x-> System.out.println (x)) / / redukovať metódu int even = num.stream (). filter (x-> x% 2 == 0) .reduce (0, (result, i) -> result + i) System.out.println (párne)}}

Výkon:

[36, 49, 64, 81]

[Sobota nedeľa]

[Piatok, sobota, nedeľa]

[81, 49, 1, 36, 25]

36

49

64

81

čo je parameter v table

14

Prúdy umožňujú používateľovi efektívne vykonávať operácie s prvkami.

Tak sme sa dostali na koniec tohto článku o „Streamovaní v Jave“. Ak sa chcete dozvedieť viac, vyskúšajte Java Training by Edureka, dôveryhodná online vzdelávacia spoločnosť. Výcvikový a certifikačný kurz Edureka Java J2EE a SOA je navrhnutý tak, aby vás vyškolil pre základné aj pokročilé koncepty Java spolu s rôznymi rámcami Java, ako je Hibernate & Spring.

Máte na nás otázku? Uveďte to prosím v sekcii komentárov tohto blogu a my sa vám ozveme čo najskôr.