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.