Tot ce trebuie să știți despre fluxul în Java



Acest articol vă va prezenta Stream in Java, un pachet introdus recent în Java și vă va oferi o explicație detaliată despre ceea ce poate face.

Un nou pachet suplimentar în Java 8, cunoscut sub numele de java.util.stream a fost adăugat pentru utilizatorii pentru o experiență de programare eficientă. Un flux poate fi definit ca o secvență de obiecte, acceptând mai multe metode. În acest articol vom explora Stream in

Următoarele indicații vor fi acoperite în acest articol,





Înainte de a începe cu acest articol despre Stream In Java, să analizăm câteva caracteristici importante,

Flux în Java: caracteristici

  • Un flux nu este o structură de date și nu stochează elemente. Colecțiile, tablourile sau canalele I / O sunt de unde iau intrarea.
  • Sursa fluxului rămâne nemodificată după efectuarea operațiunilor pe acesta. De exemplu, filtrarea unui flux produce pur și simplu un flux nou fără elementele filtrate, în loc de a modifica fluxul original.
  • Operațiunile de agregare, cum ar fi filtrarea, reducerea, potrivirea, găsirea, etc. sunt acceptate de flux.
  • Lenea poate fi considerată o caracteristică a fluxului, deoarece evaluează codurile numai atunci când este necesar.
  • Vizitarea elementelor prezente în flux se poate face o singură dată pe durata de viață a unui flux. Trebuie creat un flux nou pentru a revedea aceleași elemente prezente în sursă.

Continuăm cu acest articol despre Stream în Java



Generarea fluxurilor

Fluxurile pot fi generate prin următoarele metode:

  • curent() - Se returnează un flux secvențial.Colectieeste considerat ca sursa.
  • parallelStream () - Se returnează un flux paralel. Colecția este considerată sursă.
List strings = Arrays.asList ('Hello', '', 'Hi', 'Hola', 'Bonjour', '', 'Namaste') List filtered = strings.stream (). Filter (string ->! String. isEmpty ()). collect (Collectors.toList ())

Continuăm cu acest articol despre Stream în Java

Operațiuni pe fluxuri:

Operațiuni intermediare:

Hartă



Elementele prezente în colecție pot fi mapate la alte obiecte în funcție de predicatul transmis ca argument. Următorul exemplu este utilizat pentru a afișa pătrate unice ale numerelor utilizând metoda hărții.

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

filtru

Elementele pot fi eliminate pe baza unui criteriu utilizând această metodă.

List name = Arrays.asList ('Saturday', 'Sunday', 'Thursday') List res = name.stream (). Filter (s-> s.startsWith ('S')). Collect (Collectors.toList () )

sortate

Fluxul poate fi sortat folosind această metodă.

List name = Arrays.asList ('Saturday', 'Sunday', 'Thursday') List res = name.stream (). Sorted (). Collect (Collectors.toList ())

Flux în Java: Operațiuni terminale:

colectarea

Rezultatul procesării elementelor unui flux poate fi combinat folosind operația de colectare.

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

pentru fiecare

Această metodă este utilizată pentru iterarea prin fiecare element prezent în flux.

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

reduce

Elementele fluxului pot fi reduse la o singură valoare utilizând această metodă.

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

Variabilei res i se atribuie inițial valoarea 0 și i se adaugă i.

Continuăm cu acest articol despre Stream în Java

Filtrare

Codul poate fi filtrat utilizând metoda fluxului. În exemplul următor, prețul instrumentelor este filtrat.

java găsește cel mai mare număr în matrice
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 = nume this.price = price}} public class Test {public static void main (String [] args) {List instrumentsList = new ArrayList () // Adăugarea produselor instrumentsList.add (Instrument nou (1, „Chitară”, 15000f)) instrumentsList.add (nou Instrument (2, „Pian”, 18000f)) instrumentsList.add (instrument nou (3, „Flaut”, 15000f)) instrumentsList.add (instrument nou (4, „Tobe”, 48000f)) instrumentsList.add (instrument nou ( 5, „Ukulele”, 32000f)) List InstrumentPriceList2 = instrumentsList.stream () .filter (p -> p.price> 30000) // filtrare date .map (p-> p.price) // preluare preț .collect ( Collectors.toList ()) // colectarea ca listă System.out.println (InstrumentPriceList2)}}
 Ieșire: 

[48000.0, 32000.0]

Continuăm cu acest articol despre Stream în Java

Iterarea:

Iterarea poate fi efectuată utilizând fluxul în java.

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

Ieșire:

4

8

12

16

douăzeci

24

Să aruncăm o privire la un alt exemplu, pentru a înțelege mai eficient conceptul de flux în java.

Exemplu:

import java.util. * import java.util.stream. * public class Test {public static void main (String args []) {// crearea unei liste de numere întregi List num = Arrays.asList (6,7,8,9 ) // folosind metoda hartă List squares = num.stream (). map (y -> y * y). collect (Collectors.toList ()) System.out.println (pătrate) // crearea unei liste de String List days = Arrays.asList („Vineri”, „Sâmbătă”, „Duminică”) // metodă de filtrare List res = zile .stream (). filter (s-> s.startsWith ('S')). collect (Collectors.toList ()) System.out.println (res) // sorted method Afișare listă = days.stream (). sorted (). collect (Collectors.toList ()) System.out.println (display) / / crearea unei liste de numere întregi Număr listă = Arrays.asList (6,9,5,7,1) // metoda de colectare returnează un set Set sqSet = number.stream (). map (y-> y * y) .collect (Collectors.toSet ()) System.out.println (sqSet) // forEach method num.stream (). Map (y-> y * y) .forEach (x-> System.out.println (x)) / / reduce metoda int even = num.stream (). filter (x-> x% 2 == 0) .reduce (0, (result, i) -> result + i) System.out.println (even)}}

Ieșire:

[36, 49, 64, 81]

[Sâmbătă duminică]

[Vineri sambata duminica]

[81, 49, 1, 36, 25]

36

49

64

81

14

Fluxurile permit utilizatorului să efectueze operațiuni efectiv asupra elementelor.

Astfel am ajuns la sfârșitul acestui articol despre „Stream in Java”. Dacă doriți să aflați mai multe, consultați Java Training de la Edureka, o companie de învățare online de încredere. Cursul de formare și certificare Java J2EE și SOA al Edureka este conceput pentru a vă instrui atât pentru conceptele Java de bază, cât și pentru cele avansate, împreună cu diverse cadre Java, cum ar fi Hibernate & Spring.

Ai o întrebare pentru noi? Vă rugăm să o menționați în secțiunea de comentarii a acestui blog și vă vom răspunde cât mai curând posibil.