Sve što trebate znati o streamu na Javi



Ovaj članak upoznat će vas sa Stream in Java paketom koji je nedavno predstavljen na Javi i detaljno objasniti što on može učiniti.

Novi dodatni paket u Javi 8, poznat kao java.util.stream je dodan za korisnicima za učinkovito iskustvo programiranja. Potok se može definirati kao niz objekata koji podržavaju više metoda. U ovom bismo članku istraživali Stream u

U ovom će članku biti obrađeni sljedeći putokazi,





rekurzivni fibonaci c ++

Prije nego što započnemo s ovim člankom o Stream In Java, pogledajmo neke važne značajke,

Stream u Javi: Značajke

  • Tok nije struktura podataka i ne pohranjuje elemente. Kolekcije, nizovi ili I / O kanali odakle uzimaju ulazne podatke.
  • Izvor toka ostaje nepromijenjen nakon izvođenja operacija na njemu. Na primjer, filtriranjem streama jednostavno se stvara novi tok bez filtriranih elemenata, umjesto da se modificira izvorni tok.
  • Operacije agregiranja kao što su filtriranje, smanjivanje, podudaranje, pronalaženje itd. Podržani su u streamu.
  • Lijenost se može smatrati značajkom toka, jer ocjenjuje kodove samo kada je to potrebno.
  • Posjet elemenata prisutnih u toku može se obaviti samo jednom tijekom života potoka. Mora se stvoriti novi tok za ponovno posjećivanje istih elemenata prisutnih u izvoru.

Nastavljamo s ovim člankom o Streamu na Javi



Stvaranje strujanja

Potoci se mogu generirati sljedećim metodama:

  • tok () - Vraćen je sekvencijalni tok.Kolekcijasmatra se izvorom.
  • parallelStream () - Vraća se paralelni tok. Zbirka se smatra izvorom.
Nizovi popisa = Arrays.asList ('Zdravo', '', 'Bok', 'Hola', 'Bonjour', '', 'Namaste') Popis filtriran = strings.stream (). Filter (string ->! String. isEmpty ()). collect (Collectors.toList ())

Nastavljamo s ovim člankom o Streamu na Javi

Operacije na potocima:

Srednje operacije:

karta



Elementi prisutni u zbirci mogu se preslikati na druge objekte prema predikatu prosljeđenom kao argument. Sljedeći se primjer koristi za prikaz jedinstvenih kvadrata brojeva metodom karte.

Popis num = Arrays.asList (5,4,4,2,3,3) Popis kvadrata = num.stream (). Map (y -> y * y) .distinct (). Collect (Collectors.toList ())

filtar

Elementi se ovom metodom mogu ukloniti na temelju kriterija.

Ime popisa = Arrays.asList ('subota', 'nedjelja', 'četvrtak') Popis res = name.stream (). Filter (s-> s.startsWith ('S')). Collect (Collectors.toList () )

sortirano

Tok se može sortirati pomoću ove metode.

Ime popisa = Arrays.asList ('subota', 'nedjelja', 'četvrtak') Popis res = name.stream (). Sorted (). Collect (Collectors.toList ())

Stream u Javi: Terminal Operations:

skupljati

Rezultat obrade na elementima toka može se kombinirati pomoću operacije prikupljanja.

Popis num = Arrays.asList (4,3,2,5,6) Postavi res = num.stream (). Map (y-> y * y) .collect (Collectors.toSet ())

za svakoga

Ova se metoda koristi za ponavljanje svih elemenata prisutnih u toku.

Popis num = Arrays.asList (4,3,2,5) num.stream (). Map (x-> x * x) .forEach (y-> System.out.println (y))

smanjiti

Elementi toka mogu se ovom metodom svesti na jednu vrijednost.

Popis num = Arrays.asList (4,3,2,5) int even = num.stream (). Filter (x-> x% 2 == 0) .reduce (0, (res, i) -> res + i)

Varijabli res dodijeljena je vrijednost 0 u početku i dodan joj je i.

Nastavljamo s ovim člankom o Streamu na Javi

Filtriranje

Kôd se može filtrirati metodom stream. U sljedećem primjeru cijena instrumenata filtrira se.

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 = name this.price = cijena}} Test javne klase {public static void main (String [] args) {List instrumentsList = new ArrayList () // Dodavanje proizvoda instrumentsList.add (novi Instrument (1, 'Gitara', 15000f)) instrumentsList.add (novo Instrument (2, 'Piano', 18000f)) instrumentsList.add (novi Instrument (3, 'Flauta', 15000f)) instrumentsList.add (novi Instrument (4, 'Bubnjevi', 48000f)) instrumentsList.add (novi Instrument ( 5, 'Ukulele', 32000f)) Popis InstrumentPriceList2 = instrumentsList.stream () .filter (p -> p.price> 30000) // filtriranje podataka .mapa (p-> p.price) // dohvaćanje cijene .collect ( Collectors.toList ()) // prikupljanje kao popis System.out.println (InstrumentPriceList2)}}
 Izlaz: 

[48000,0, 32000,0]

Nastavljamo s ovim člankom o Streamu na Javi

Iteracija:

Iteracija se može izvesti upotrebom streama u javi.

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

Izlaz:

4

8

12

16

dvadeset

24

Pogledajmo još jedan primjer kako bismo učinkovitije razumjeli koncept Streama u javi.

Primjer:

import java.util. * import java.util.stream. * test javne klase {public static void main (String args []) {// stvaranje popisa cijelih brojeva Popis num = Arrays.asList (6,7,8,9 ) // pomoću metode karte Popis kvadrata = num.stream (). map (y -> y * y). collect (Collectors.toList ()) System.out.println (kvadrati) // stvaranje popisa String List days = Arrays.asList ('petak', 'subota', 'nedjelja') // metoda filtriranja Lista res = days .stream (). filter (s-> s.startsWith ('S')). collect (Collectors.toList ()) System.out.println (res) // sortirana metoda Popis display = days.stream (). sorted (). collect (Collectors.toList ()) System.out.println (display) / / stvaranje popisa cjelobrojnih brojeva Popis broj = Arrays.asList (6,9,5,7,1) // metoda prikupljanja vraća skup Set sqSet = number.stream (). map (y-> y * y) .collect (Collectors.toSet ()) System.out.println (sqSet) // forEach metoda num.stream (). Map (y-> y * y) .forEach (x-> System.out.println (x)) / / smanji metodu int even = num.stream (). filter (x-> x% 2 == 0) .reduce (0, (result, i) -> result + i) System.out.println (even)}}

Izlaz:

[36, 49, 64, 81]

[Subota nedjelja]

[Petak, subota, nedjelja]

[81, 49, 1, 36, 25]

36

49

64

81

14

Potoci omogućuju korisniku učinkovito izvršavanje operacija na elementima.

Tako smo došli do kraja ovog članka o 'Stream in Java'. Ako želite saznati više, pogledajte Java Training tvrtke Edureka, pouzdane tvrtke za internetsko učenje. Edurekin tečaj za obuku i certificiranje Java J2EE i SOA osmišljen je kako bi vas osposobio za osnovne i napredne Java koncepte, zajedno s raznim Java okvirima poput Hibernate & Spring.

Imate pitanje za nas? Molimo vas da ga spominjete u odjeljku za komentare ovog bloga i javit ćemo vam se što je prije moguće.