Vse, kar morate vedeti o toku v Javi



Ta članek vas bo seznanil s paketom Stream in Java, ki je bil nedavno predstavljen v Javi, in podrobno razlago, kaj lahko naredi.

Nov dodatni paket v Javi 8, znan kot java.util.stream je dodan za uporabnikom za učinkovito programsko izkušnjo. Tok lahko definiramo kot zaporedje predmetov, ki podpira več metod. V tem članku bi raziskovali tok v

V tem članku bodo zajeti naslednji napotki:





Preden začnemo s tem člankom o Stream In Java, si oglejmo nekaj pomembnih lastnosti,

Tok v Javi: Značilnosti

  • Tok ni podatkovna struktura in ne shranjuje elementov. Zbirke, nizi ali vhodno / izhodni kanali od tam prevzamejo vhodne podatke.
  • Vir toka ostane nespremenjen po izvedbi operacij na njem. Na primer, filtriranje toka preprosto ustvari nov tok brez filtriranih elementov, namesto da spremeni prvotni tok.
  • Operacije združevanja, kot so filtriranje, zmanjšanje, ujemanje, iskanje itd., Podpira tok.
  • Lenobo lahko obravnavamo kot značilnost toka, saj ocenjuje kode le, kadar je to potrebno.
  • Obisk elementov, ki so prisotni v toku, je mogoče v življenju potoka opraviti samo enkrat. Za ponovni obisk istih elementov, ki so prisotni v viru, je treba ustvariti nov tok.

Nadaljujemo s tem člankom o toku v Javi



Ustvarjanje tokov

Tokove je mogoče ustvariti z naslednjimi metodami:

  • tok () - Vrnjen je zaporedni tok.Zbirkase šteje za vir.
  • parallelStream () - Vrne se vzporedni tok. Zbirka se šteje za vir.
Seznam nizov = Arrays.asList ('Pozdravljeni', '', 'Živjo', 'Hola', 'Bonjour', '', 'Namaste') Seznam filtriran = strings.stream (). Filter (string ->! String. isEmpty ()). collect (Collectors.toList ())

Nadaljujemo s tem člankom o toku v Javi

Operacije na potokih:

Vmesne operacije:

zemljevid



Prisotni elementi v zbirki se lahko preslikajo na druge predmete glede na predikat, ki je bil poslan kot argument. Naslednji primer se uporablja za prikaz enoličnih kvadratov števil z uporabo metode zemljevida.

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

filter

S to metodo lahko elemente odstranimo na podlagi meril.

Ime seznama = Arrays.asList ('sobota', 'nedelja', 'četrtek') Seznam res = name.stream (). Filter (s-> s.startsWith ('S')). Collect (Collectors.toList () )

razvrščeno

Tok lahko razvrstimo s to metodo.

Ime seznama = Arrays.asList ('sobota', 'nedelja', 'četrtek') Seznam res = name.stream (). Sorted (). Collect (Collectors.toList ())

Tok v Javi: Terminalske operacije:

zbirati

Rezultat obdelave elementov toka je mogoče kombinirati z uporabo operacije zbiranja.

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

za vsakogar

Ta metoda se uporablja za iteracijo skozi vse elemente, ki so prisotni v toku.

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

zmanjšati

S to metodo lahko elemente toka zmanjšamo na eno vrednost.

print_r v niz
Seznam num = Arrays.asList (4,3,2,5) int even = num.stream (). Filter (x-> x% 2 == 0) .reduce (0, (res, i) -> res + jaz)

Spremenljivki res se na začetku dodeli vrednost 0 in ji se doda i.

Nadaljujemo s tem člankom o toku v Javi

Filtriranje

Kodo lahko filtriramo z uporabo metode pretoka. V naslednjem primeru se cena instrumentov filtrira.

import java.util. * import java.util.stream.Collectors class Instrument {int num String name float price public Instrument (int num, String name, float price) {this.num = num this.name = name this.price = cena}} preizkus javnega razreda {public static void main (String [] args) {List instrumentsList = new ArrayList () // Dodajanje izdelkov instrumentsList.add (new Instrument (1, 'Guitar', 15000f)) instrumentsList.add (novo Instrument (2, 'Piano', 18000f)) instrumentsList.add (nov Instrument (3, 'Flute', 15000f)) instrumentsList.add (nov Instrument (4, 'Bobni', 48000f)) instrumentsList.add (nov Instrument ( 5, 'Ukulele', 32000f)) Seznam InstrumentPriceList2 = instrumentsList.stream () .filter (p -> p.cena> 30000) // filtriranje podatkov .map (p-> p.cena) // pridobivanje cene .collect ( Collectors.toList ()) // zbiranje kot seznam System.out.println (InstrumentPriceList2)}}
 Izhod: 

[48000,0, 32000,0]

Nadaljujemo s tem člankom o toku v Javi

Ponavljanje:

Iteracijo lahko izvedemo z uporabo toka v javi.

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

Izhod:

4.

8.

12.

16.

dvajset

24.

Oglejmo si še en primer, da bomo učinkoviteje razumeli koncept Stream v javi.

Primer:

import java.util. * import java.util.stream. * test javnega razreda {public static void main (String args []) {// ustvarjanje seznama celoštevilk Seznam num = Arrays.asList (6,7,8,9 ) // z uporabo metode zemljevida Seznam kvadratov = num.stream (). map (y -> y * y). collect (Collectors.toList ()) System.out.println (kvadratki) // ustvarjanje seznama String List days = Arrays.asList ('petek', 'sobota', 'nedelja') // metoda filtriranja Seznam res = days .stream (). filter (s-> s.startsWith ('S')). collect (Collectors.toList ()) System.out.println (res) // sortirana metoda Seznam display = days.stream (). sorted (). collect (Collectors.toList ()) System.out.println (display) / / ustvarjanje seznama celih števil Številka seznama = Arrays.asList (6,9,5,7,1) // metoda collection vrne niz Set sqSet = number.stream (). map (y-> y * y) .collect (Collectors.toSet ()) System.out.println (sqSet) // forEach metoda num.stream (). Map (y-> y * y) .forEach (x-> System.out.println (x)) / / zmanjšanje metode int even = num.stream (). filter (x-> x% 2 == 0) .reduce (0, (result, i) -> result + i) System.out.println (even)}}

Izhod:

poiščite največje število v matriki java

[36, 49, 64, 81]

[Sobota Nedelja]

[Petek, sobota, nedelja]

[81, 49, 1, 36, 25]

36

49

64

81

14.

Pretoki uporabniku omogočajo učinkovito izvajanje elementov nad elementi.

Tako smo prišli do konca tega članka o 'Stream in Java'. Če želite izvedeti več, si oglejte Java Training by Edureka, zaupanja vredno podjetje za spletno učenje. Edurekin tečaj za usposabljanje in certificiranje Java J2EE in SOA je zasnovan tako, da vas usposobi za temeljne in napredne koncepte Java, skupaj z različnimi Java okviri, kot sta Hibernate & Spring.

Imate vprašanje za nas? Prosimo, omenite to v oddelku za komentarje tega spletnega dnevnika, mi se vam bomo javili v najkrajšem možnem času.