logo

Suoratoista Javassa

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:

  1. Stream API on tapa ilmaista ja käsitellä objektikokoelmia.
  2. 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
  1. Keskitason toiminnot
  2. Lopeta toiminnot

Keskitason toiminnot

java stream -toiminnot

Välioperaatiot ovat operaatiotyyppejä, joissa useat menetelmät on ketjutettu peräkkäin.

greibachin normaalimuoto

Keskitason toimintojen ominaisuudet

  1. Menetelmät on ketjutettu yhteen.
  2. Välioperaatiot muuttavat virran toiseksi virraksi.
  3. 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

  1. 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.
  2. Streamia käytetään elementtien laskemiseen liukuhihnamenetelmien mukaisesti muuttamatta kohteen alkuperäistä arvoa.