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:
- 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:
- Keskitason toiminnot
- Lopeta toiminnot
Keskitason toiminnot
Välioperaatiot ovat operaatiotyyppejä, joissa useat menetelmät on ketjutettu peräkkäin.
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
// 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 %>> |