Java 8:ssa esiteltyä Stream API:ta käytetään objektikokoelmien käsittelyyn. Java-virta on objektijono, joka tukee erilaisia menetelmiä, jotka voidaan liukuhihnalla tuottaa halutun tuloksen.
Streamin käyttö Javassa
Streamin käyttötavat Javassa on mainittu alla:
- Stream API on tapa ilmaista ja käsitellä objektikokoelmia.
- Antaa meille mahdollisuuden suorittaa toimintoja, kuten suodatusta, kartoitusta, pienentämistä ja lajittelua.
Kuinka luoda Java Stream?
Java Stream Creation on yksi perusvaiheista ennen Java Streamin toimintojen harkitsemista. Alla on syntaksi Java-virran ilmoittamiseen.
Syntaksi
Stream stream;>
Tässä T on joko luokka, objekti tai tietotyyppi ilmoituksesta riippuen.
Java Stream -ominaisuudet
Java-streamin ominaisuudet mainitaan alla:
- Virta ei ole tietorakenne, vaan se ottaa syötteen kokoelmista, taulukoista tai I/O-kanavista.
- Virrat eivät muuta alkuperäistä tietorakennetta, ne tarjoavat vain tuloksen liukuhihnamenetelmien mukaisesti.
- Jokainen välioperaatio suoritetaan laiskasti ja palauttaa tuloksena virran, joten erilaisia välioperaatioita voidaan liukuhihnalla. Päätetoiminnot merkitsevät streamin lopun ja palauttavat tuloksen.
Erilaiset toiminnot virroissa
Streamissä on kahdenlaisia toimintoja:
bash lukea tiedosto
- Keskitason toiminnot
- Lopeta toiminnot
Keskitason toiminnot

Välioperaatiot ovat operaatiotyyppejä, joissa useat menetelmät on ketjutettu peräkkäin.
greibachin normaalimuoto
Keskitason toimintojen ominaisuudet
- Menetelmät on ketjutettu yhteen.
- Välioperaatiot muuttavat virran toiseksi virraksi.
- Se mahdollistaa suodatuskonseptin, jossa yksi menetelmä suodattaa tiedot ja siirtää sen toiselle menetelmälle käsittelyn jälkeen.
Java Streamin edut
Meillä on joitain etuja, joiden vuoksi käytämme Streamia Javassa, kuten alla mainitaan:
- Ei tallennustilaa
- Toimintojen putkisto
- Laiskuus
- Voi olla loputon
- Voidaan rinnastaa
- Voidaan luoda kokoelmista, taulukoista, tiedostoriveistä, virran menetelmistä, IntStreamista jne.
Tärkeitä välioperaatioita
Alla on mainittu muutamia keskitason operaatioita:
1. kartta()
Karttamenetelmää käytetään palauttamaan virta, joka koostuu tuloksista, jotka on saatu annetun funktion soveltamisesta tämän virran elementteihin.
List number = Arrays.asList(2,3,4,5); List square = number.stream().map(x->x*x).collect(Collectors.toList());>
2. suodatin()
Suodatusmenetelmää käytetään elementtien valitsemiseen argumenttina välitetyn Predikaatin mukaisesti.
List names = Arrays.asList('Reflection','Collection','Stream'); List result = names.stream().filter(s->s.startsWith('S')).collect(Collectors.toList());> 3. lajiteltu()
Lajiteltu menetelmää käytetään virran lajitteluun.
List names = Arrays.asList('Reflection','Collection','Stream'); List result = names.stream().sorted().collect(Collectors.toList());> Terminaalin toiminta
Päätetoiminnot ovat toimintotyyppejä, jotka palauttavat tuloksen. Näitä toimintoja ei käsitellä enempää, vaan ne palauttavat lopputuloksen arvon.
Tärkeitä terminaalitoimintoja
Alla on mainittu muutamia terminaalitoimintoja:
1. kerätä()
Keräysmenetelmää käytetään palauttamaan virralle suoritettujen välitoimintojen tulos.
List number = Arrays.asList(2,3,4,5,3); Set square = number.stream().map(x->x*x).collect(Collectors.toSet());>
2. forEach()
ForEach-menetelmää käytetään iteroitaessa virran jokaisen elementin läpi.
List number = Arrays.asList(2,3,4,5); number.stream().map(x->x*x).forEach(y->System.out.println(y));>
3. vähentää()
Vähennysmenetelmää käytetään vähentämään virran elementit yhdeksi arvoksi. Vähennysmenetelmä ottaa BinaryOperatorin parametriksi.
List number = Arrays.asList(2,3,4,5); int even = number.stream().filter(x->x%2==0).reduce(0,(ans,i)-> ans+i);>
Tässä ans-muuttujalle annetaan alkuarvo 0 ja siihen lisätään i.
Huomautus: Välioperaatiot toimivat Lazy Evaluation -konseptin perusteella, mikä varmistaa, että jokainen menetelmä palauttaa kiinteän arvon (päätetoiminto) ennen siirtymistä seuraavaan menetelmään.
Esimerkki Java Streamista
Java
javan objekti
// Java program to demonstrate> // the use of stream in java> import> java.util.*;> import> java.util.stream.*;> class> Demo {> >public> static> void> main(String args[])> >{> >// create a list of integers> >List number = Arrays.asList(>2>,>3>,>4>,>5>);> >// demonstration of map method> >List square> >= number.stream()> >.map(x ->x * x)> >.collect(Collectors.toList());> >// create a list of String> >List names = Arrays.asList(> >'Reflection'>,>'Collection'>,>'Stream'>);> >// demonstration of filter method> >List result> >= names.stream()> >.filter(s ->s.startsWith(>'S'>))> >.collect(Collectors.toList());> > >System.out.println(result);> >// demonstration of sorted method> >List show> >= names.stream()> >.sorted()> >.collect(Collectors.toList());> > >System.out.println(show);> >// create a list of integers> >List numbers> >= Arrays.asList(>2>,>3>,>4>,>5>,>2>);> >// collect method returns a set> >Set squareSet> >= numbers.stream()> >.map(x ->x * x)> >.collect(Collectors.toSet());> > >System.out.println(squareSet);> >// demonstration of forEach method> >number.stream()> >.map(x ->x * x)> >.forEach(y ->System.out.println(y));> >// demonstration of reduce method> >int> even> >= number.stream()> >.filter(x ->x %>>0>)> >.reduce(>0>, (ans, i) ->ans + i);> >System.out.println(even);> >}> }> |
java-lajitteluluettelo
>
>
Lähtö
[4, 9, 16, 25] [Stream] [Collection, Reflection, Stream] [16, 4, 9, 25] 4 9 16 25 6>
Java Streamin tärkeitä kohtia/huomautuksia
- Virta koostuu lähteestä, jota seuraa nolla tai useampia välimenetelmiä, jotka on yhdistetty (putkitettu) ja päätemenetelmä lähteestä saatujen kohteiden käsittelemiseksi kuvattujen menetelmien mukaisesti.
- Streamia käytetään elementtien laskemiseen liukuhihnamenetelmien mukaisesti muuttamatta kohteen alkuperäistä arvoa.