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.