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.