Kõik, mida peate Java voogesituse kohta teadma



See artikkel tutvustab teile Java-voogu, mis on hiljuti Java-s tutvustatud pakett, ja üksikasjalikku selgitust selle võimaluste kohta.

Uus lisapakett Java 8-s, tuntud kui java.util.stream on lisatud kasutajatele tõhusa programmeerimiskogemuse saamiseks. Voogu saab määratleda objektide jadana, mis toetab mitut meetodit. Selles artiklis uurime voogu sisse

Käesolevas artiklis käsitletakse järgmisi näpunäiteid,





Enne kui alustame selle artikliga Java voogesitamist, heitkem pilk mõnele olulisele funktsioonile,

Voog Java-s: funktsioonid

  • Voog ei ole andmestruktuur ja see ei salvesta elemente. Kogud, massiivid või sisend- / väljundkanalid on see, kust see sisendi võtab.
  • Pärast operatsioonide sooritamist jääb voo allikas muutmata. Näiteks voo filtreerimine tekitab algse voo muutmise asemel lihtsalt uue voo ilma filtreeritud elementideta.
  • Koondamistoiminguid, nagu filtreerimine, vähendamine, sobitamine, leidmine jne, toetab voog.
  • Laiskust võib pidada voo tunnuseks, kuna see hindab koode ainult vajaduse korral.
  • Ojas leiduvaid elemente saab külastada ainult üks kord voo eluea jooksul. Allikas olevate samade elementide uuesti külastamiseks tuleb luua uus voog.

Selle artikliga jätkamine Java-voos



Voogude genereerimine

Vooge saab luua järgmiste meetoditega:

  • voog () - tagastatakse järjestikune voog.Koguminepeetakse allikaks.
  • parallelStream () - tagastatakse paralleelne voog. Allikaks peetakse kogu.
Loendi stringid = Arrays.asList ('Tere', '', 'Tere', 'Hola', 'Bonjour', '', 'Namaste') Nimekiri filtered = stringid.stream (). Filter (string ->! String. isEmpty ()). collect (Collectors.toList ())

Selle artikliga jätkamine Java-voos

Toimingud voogudes:

Vahetegevused:

kaart



Kogus olevaid elemente saab kaardistada teiste objektidega vastavalt argumendina edastatud predikaadile. Järgmist näidet kasutatakse numbrite unikaalsete ruutude kuvamiseks kaardimeetodi abil.

Loend nr = Arrays.asList (5,4,4,2,3,3) Loendiruudud = num.stream (). Kaart (y -> y * y) .distinct (). Collect (Collectors.toList ())

filter

Selle meetodi abil saab elemente kriteeriumide alusel eemaldada.

Loendi nimi = Arrays.asList ('laupäev', 'pühapäev', 'neljapäev') Nimekiri res = nimi.stream (). Filter (s-> s.startsWith ('S')). Collect (Collectors.toList () )

sorteeritud

Selle meetodi abil saab voogu sortida.

Loendi nimi = Arrays.asList ('laupäev', 'pühapäev', 'neljapäev') Nimekiri res = nimi.stream (). Sorted (). Collect (Collectors.toList ())

Voog Java-s: terminali toimingud:

koguma

Voo elementidel töötlemise tulemuse saab kombineerida kogumisoperatsiooni abil.

Loend number = Arrays.asList (4,3,2,5,6) Määra res = num.stream (). Map (y-> y * y). Koguge (Collectors.toSet ())

igaühele

Seda meetodit kasutatakse kõigi voos olevate elementide itereerimiseks.

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

vähendada

Voo elemente saab selle meetodi abil vähendada ühele väärtusele.

Loend number = massiivid.asList (4,3,2,5) int isegi = num.stream (). Filter (x-> x% 2 == 0) .reduce (0, (res, i) -> res + i)

Muutujale res määratakse esialgu väärtus 0 ja sellele lisatakse i.

Selle artikliga jätkamine Java-voos

java kuidas kasutada tostringi

Filtreerimine

Koodi saab filtreerida voo meetodi abil. Järgmises näites filtreeritakse instrumentide hind välja.

import java.util. * import java.util.stream.Collectors class Instrument {int num Stringi nimi float price public Instrument (int number, Stringi nimi, ujukhind) {this.num = num this.name = nimi this.price = hind}} public class Test {public static void main (String [] args) {List instrumentsList = new ArrayList () // Toodete lisamine instrumentsList.add (uus instrument (1, 'Kitarr', 15000f)) instrumentsList.add (uus Instrument (2, 'Piano', 18000f)) instrumentsList.add (uus instrument (3, 'Flööt', 15000f)) instrumentsList.add (uus pill (4, 'Trummid', 48000f)) instrumentsList.add (uus pill ( 5, 'Ukulele', 32000f)) Nimekiri InstrumentPriceList2 = instrumentsList.stream () .filter (p -> p.price> 30000) // andmete filtreerimine .map (p-> p.price) // hinna toomine .collect ( Collectors.toList ()) // kogumine loendina System.out.println (InstrumentPriceList2)}}
 Väljund: 

[48000,0, 32000,0]

Selle artikliga jätkamine Java-voos

Korduv:

Iteratsiooni saab teostada voos Java abil.

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

Väljund:

4

8

12

16

kakskümmend

24

Vaatame veel ühte näidet, et mõista voo mõistet Java-s tõhusamalt.

Näide:

import java.util. * import java.util.stream. * avalik klass Test {public static void main (String args []) {// täisarvude loendi loomine Loend number = Arrays.asList (6,7,8,9 ) // kaardimeetodit kasutades Ruudud = num.stream (). kaart (y -> y * y). koguma (Collectors.toList ()) System.out.println (ruudud) // stringiloendi loendi loomine days = Arrays.asList ('reede', 'laupäev', 'pühapäev') // filtreerimismeetod Loend res = päeva .stream (). filter (s-> s.startWith ('S')). koguma (Collectors.toList ()) System.out.println (res) // sorteeritud meetod Loendi kuvamine = days.stream (). sorted (). collect (Collectors.toList ()) System.out.println (kuva) / / täisarvude loendi loomine Loendi number = Arrays.asList (6,9,5,7,1) // meetod meetod kogub hulga komplekti Set sqSet = number.stream (). map (y-> y * y) .collect [Collectors.toSet ()] System.out.println (sqSet) // iga meetodi num.stream (). Map (y-> y * y) .forEach (x-> System.out.println (x)) / / reduc meetod int isegi = arv.vool (). filter (x-> x% 2 == 0) .reduce (0, (tulemus, i) -> tulemus + i) System.out.println (isegi)}}

Väljund:

[36, 49, 64, 81]

[Laupäev, pühapäev]

[Reede, laupäev, pühapäev]

[81, 49, 1, 36, 25]

36

49

64

81

kuidas luua müügijõu rakendust

14

Vood võimaldavad kasutajal elementidega toiminguid tõhusalt teha.

Seega oleme jõudnud artiklile ‘Stream in Java’. Kui soovite rohkem teada saada, vaadake usaldusväärse veebipõhise õppefirma Edureka Java koolitust. Edureka Java J2EE ja SOA koolitus- ja sertifitseerimiskursus on mõeldud selleks, et õpetada teid nii Java põhiliste kui ka edasijõudnute kontseptsioonide jaoks koos erinevate Java-raamistikega nagu Hibernate & Spring.

Kas teil on meile küsimus? Palun mainige seda selle blogi kommentaaride jaotises ja võtame teiega ühendust niipea kui võimalik.