Kaikki mitä sinun tarvitsee tietää Java-suoratoistosta



Tässä artikkelissa esitellään Stream in Java -paketti, joka on hiljattain otettu käyttöön Java-ohjelmassa, ja yksityiskohtainen selitys siitä, mitä se voi tehdä.

Uusi lisäpaketti Java 8: ssa, joka tunnetaan nimellä java.util.stream on lisätty verkkotunnukselle käyttäjille tehokkaasta ohjelmointikokemuksesta. Virta voidaan määritellä kohteiden sekvenssiksi, joka tukee useita menetelmiä. Tässä artikkelissa tutkimme Stream in -sovellusta

Seuraavat ohjeet käsitellään tässä artikkelissa,





Ennen kuin aloitamme tämän artikkelin kirjoittamisen Java-ohjelmassa, katsokaamme joitain tärkeitä ominaisuuksia,

Stream in Java: Ominaisuudet

  • Stream ei ole tietorakenne, eikä se tallenna elementtejä. Kokoelmat, Taulukot tai I / O-kanavat on paikka, josta se ottaa syötteen.
  • Virran lähde pysyy muuttumattomana sen jälkeen, kun siihen on suoritettu toimintoja. Esimerkiksi virran suodattaminen yksinkertaisesti tuottaa uuden virran ilman suodatettuja elementtejä alkuperäisen virran muokkaamisen sijaan.
  • Striimi tukee aggregaatiotoimintoja, kuten suodatus, pienennys, haku, haku jne.
  • Laiskuutta voidaan pitää virran ominaisuutena, koska se arvioi koodit vain tarvittaessa.
  • Virtaan sisältyvien elementtien vierailu voidaan tehdä vain kerran virran eliniän aikana. Lähteessä olevien samojen elementtien tarkastelemiseksi on luotava uusi virta.

Tämän artikkelin siirtäminen Stream in Java -sovellukseen



Striimien luominen

Suoratoistot voidaan luoda seuraavilla menetelmillä:

  • virta () - Peräkkäinen virta palautetaan.Kokoelmapidetään lähteenä.
  • parallelStream () - Rinnakkainen virta palautetaan. Kokoelmaa pidetään lähteenä.
Luettelosarjat = Arrays.asList ('Hei', '', 'Hei', 'Hola', 'Bonjour', '', 'Namaste') Luettelo suodatettu = strings.stream (). Filter (merkkijono ->! Merkkijono. isEmpty ()). collect (Collectors.toList ())

Tämän artikkelin siirtäminen Stream in Java -sovellukseen

Suoratoistot:

Välitoiminnot:

kartta



Kokoelmassa olevat elementit voidaan yhdistää muihin objekteihin argumenttina annettavan predikaatin mukaan. Seuraavaa esimerkkiä käytetään näyttämään numeroiden yksilölliset neliöt karttamenetelmällä.

Lista numero = Arrays.asList (5,4,4,2,3,3) Lista neliöt = num.stream (). Map (y -> y * y) .distinct (). Collect (Collectors.toList ())

suodattaa

Elementit voidaan poistaa kriteerien perusteella tällä menetelmällä.

Luettelon nimi = Arrays.asList ('lauantai', 'sunnuntai', 'torstai') List res = nimi.stream (). Filter (s-> s.startsWith ('S')). Collect (Collectors.toList () )

lajiteltu

Stream voidaan lajitella tällä menetelmällä.

Luettelon nimi = Arrays.asList ('lauantai', 'sunnuntai', 'torstai') Luettelo res = nimi.stream (). Lajiteltu (). Collect (Collectors.toList ())

Suoratoisto Java-ohjelmassa: Pääteoperaatiot:

kerätä

Virran elementeillä tapahtuvan käsittelyn tulos voidaan yhdistää keräystoiminnolla.

Lista numero = Arrays.asList (4,3,2,5,6) Aseta res = num.stream (). Map (y-> y * y). Kerää (Collectors.toSet ())

jokaiselle

kuinka käyttää pythonia anakondassa

Tätä menetelmää käytetään iteroimaan jokaisen virtauksessa olevan elementin läpi.

mene lajittelemaan c ++
Lista numero = Arrays.asList (4,3,2,5) num.stream (). Map (x-> x * x) .forEach (y-> System.out.println (y))

vähentää

Streamin elementit voidaan pienentää yhdeksi arvoksi tällä menetelmällä.

Lista numero = Taulukot.asList (4,3,2,5) int parillinen = num.stream (). Suodatin (x-> x% 2 == 0). Pienennä (0, (res, i) -> res + i)

Muuttujalle res määritetään aluksi arvo 0 ja siihen lisätään i.

Tämän artikkelin siirtäminen Stream in Java -sovellukseen

Suodatus

Koodi voidaan suodattaa suoratoistomenetelmällä. Seuraavassa esimerkissä instrumenttien hinta suodatetaan.

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 = nimi this.price = hinta}} julkisen luokan testi {public static void main (String [] args) {List instrumentsList = new ArrayList () // Tuotteiden lisääminen instrumentsList.add (uusi instrumentti (1, 'kitara', 15000f)) instrumentitList.add (uusi Instrument (2, 'Piano', 18000f)) instrumentsList.add (uusi instrumentti (3, 'Flute', 15000f)) instrumentitList.add (uusi instrumentti (4, 'Rummut', 48000f)) instrumentitList.add (uusi instrumentti ( 5, 'Ukulele', 32000f)) List InstrumentPriceList2 = instrumentsList.stream () .filter (p -> p.price> 30000) // tietojen suodatus .map (p-> p.price) // haetaan hintaa .collect ( Collectors.toList ()) // keräily luettelona System.out.println (InstrumentPriceList2)}}
 Tuotos: 

[48000.0, 32000.0]

Tämän artikkelin siirtäminen Stream in Java -sovellukseen

Toistuva:

Iteraatio voidaan suorittaa käyttämällä streamia javassa.

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

Tuotos:

4

8

12

16

kaksikymmentä

24

Katsotaanpa toinen esimerkki, jotta voisimme ymmärtää Streamin käsitettä jaavassa tehokkaammin.

Esimerkki:

import java.util. * import java.util.stream. * public class Test {public static void main (String args []) {// kokonaislukujen luettelon luominen Listanumero = Arrays.asList (6,7,8,9 ) // käyttämällä karttamenetelmää Luettelo neliöistä = num.stream (). map (y -> y * y). kerää (Collectors.toList ()) System.out.println (neliöt) // luettelon luominen merkkijonoluettelosta days = Arrays.asList ('perjantai', 'lauantai', 'sunnuntai') // suodatustapa Luettelo res = päivää .stream (). filter (s-> s.startsWith ('S')). kerää (Collectors.toList ()) System.out.println (res) // lajiteltu menetelmä Luettelonäyttö = days.stream (). lajiteltu (). collect (Collectors.toList ()) System.out.println (näyttö) / / luodaan kokonaislukujen luettelo Luettelonumero = Arrays.asList (6,9,5,7,1) // metodi metodi kerää joukon Set sqSet = numero.stream (). map (y-> y * y) .collect (Collectors.toSet ()) System.out.println (sqSet) // jokaiselle menetelmälle num.stream (). Map (y-> y * y) .forEach (x-> System.out.println (x)) / / vähentää menetelmää int jopa = lukumäärä (). suodatin (x-> x% 2 == 0). vähennä (0, (tulos, i) -> tulos + i) System.out.println (parillinen)}}

Tuotos:

[36, 49, 64, 81]

[Lauantai sunnuntai]

[Perjantai lauantai sunnuntai]

[81, 49, 1, 36, 25]

36

mikä on merkkiliitäntä java

49

64

81

14

Striimien avulla käyttäjä voi suorittaa toimintoja elementeillä tehokkaasti.

Siksi olemme päässeet tämän artikkelin 'Stream in Java' -artikkeliin. Jos haluat oppia lisää, tutustu luotettavan verkkokoulutusyrityksen Edurekan Java-koulutukseen. Edurekan Java J2EE- ja SOA-koulutus- ja sertifiointikurssit on suunniteltu kouluttamaan sekä ydin- että edistyneitä Java-konsepteja sekä erilaisia ​​Java-kehyksiä, kuten Hibernate & Spring.

Onko sinulla kysymys meille? Mainitse se tämän blogin kommenttiosassa ja otamme sinuun yhteyttä mahdollisimman pian.