Όλα όσα πρέπει να γνωρίζετε για τη ροή στην Java



Αυτό το άρθρο θα σας παρουσιάσει στη ροή σε Java ένα πακέτο που εισήχθη πρόσφατα στην Java και θα έχετε μια λεπτομερή εξήγηση για το τι μπορεί να κάνει.

Ένα νέο πρόσθετο πακέτο στο Java 8, γνωστό ως java.util.stream έχει προστεθεί για οι χρήστες για μια αποτελεσματική εμπειρία προγραμματισμού. Μια ροή μπορεί να οριστεί ως μια ακολουθία αντικειμένων, υποστηρίζοντας πολλαπλές μεθόδους. Σε αυτό το άρθρο θα διερευνούσαμε το Stream in

Οι ακόλουθοι δείκτες θα καλυφθούν σε αυτό το άρθρο,





Προτού ξεκινήσουμε με αυτό το άρθρο σχετικά με τη ροή σε Java, ας ρίξουμε μια ματιά σε ορισμένες σημαντικές δυνατότητες,

Ροή σε Java: Χαρακτηριστικά

  • Η ροή δεν είναι δομή δεδομένων και δεν αποθηκεύει στοιχεία. Οι συλλογές, οι πίνακες ή τα κανάλια εισόδου / εξόδου είναι από όπου προέρχεται η είσοδος.
  • Η πηγή της ροής παραμένει μη τροποποιημένη μετά την εκτέλεση εργασιών σε αυτήν. Για παράδειγμα, το φιλτράρισμα μιας ροής παράγει απλά μια νέα ροή χωρίς τα φιλτραρισμένα στοιχεία, αντί να τροποποιεί την αρχική ροή.
  • Οι λειτουργίες συγκέντρωσης όπως φίλτρο, μείωση, αντιστοίχιση, εύρεση κ.λπ. υποστηρίζονται από ροή.
  • Η τεμπελιά μπορεί να θεωρηθεί χαρακτηριστικό της ροής, καθώς αξιολογεί τους κωδικούς μόνο όταν απαιτείται.
  • Η επίσκεψη των στοιχείων που υπάρχουν στη ροή μπορεί να γίνει μόνο μία φορά κατά τη διάρκεια ζωής μιας ροής. Πρέπει να δημιουργηθεί μια νέα ροή για την επίσκεψη των ίδιων στοιχείων που υπάρχουν στην πηγή.

Προχωρώντας με αυτό το άρθρο στο Stream σε Java



Δημιουργία ροών

Οι ροές μπορούν να δημιουργηθούν με τις ακόλουθες μεθόδους:

μεταβλητά και αμετάβλητα αντικείμενα στην Java
  • ρεύμα(- Επιστρέφεται μια διαδοχική ροή.Συλλογήθεωρείται ως η πηγή.
  • parallelStream () - Επιστρέφεται μια παράλληλη ροή. Η συλλογή θεωρείται ως η πηγή.
Λίστα συμβολοσειρών = Arrays.asList ('Hello', '', 'Hi', 'Hola', 'Bonjour', '', 'Namaste') List filtered = strings.stream (). Filter (string ->! String. isEmpty ()). συλλογή (Collectors.toList ())

Προχωρώντας με αυτό το άρθρο στο Stream σε Java

Λειτουργίες σε ροές:

Ενδιάμεσες λειτουργίες:

χάρτης



Τα στοιχεία που υπάρχουν στη συλλογή μπορούν να αντιστοιχιστούν σε άλλα αντικείμενα σύμφωνα με το υπόθετο που μεταβιβάστηκε ως όρισμα. Το ακόλουθο παράδειγμα χρησιμοποιείται για την εμφάνιση μοναδικών τετραγώνων των αριθμών χρησιμοποιώντας τη μέθοδο χάρτη.

List num = Arrays.asList (5,4,4,2,3,3) Λίστα τετραγώνων = num.stream (). Map (y -> y * y) .distinct (). Collect (Collectors.toList ())

φίλτρο

Τα στοιχεία μπορούν να αφαιρεθούν βάσει κριτηρίων χρησιμοποιώντας αυτήν τη μέθοδο.

Όνομα λίστας = Arrays.asList ('Σάββατο', 'Κυριακή', 'Πέμπτη') Λίστα res = name.stream (). Filter (s-> s.startsWith ('S')). Collect (Collectors.toList () )

ταξινομημένο

Η ροή μπορεί να ταξινομηθεί χρησιμοποιώντας αυτήν τη μέθοδο.

Όνομα λίστας = Arrays.asList ('Σάββατο', 'Κυριακή', 'Πέμπτη') Λίστα res = name.stream (). Ταξινομημένο (). Collect (Collectors.toList ())

Ροή σε Java: Λειτουργίες τερματικού:

συλλέγω

Το αποτέλεσμα της επεξεργασίας στα στοιχεία μιας ροής μπορεί να συνδυαστεί χρησιμοποιώντας τη λειτουργία συλλογής.

List num = Arrays.asList (4,3,2,5,6) Ορισμός res = num.stream (). Map (y-> y * y) .collect (Collectors.toSet ())

για κάθε

Αυτή η μέθοδος χρησιμοποιείται για την επανάληψη κάθε στοιχείου που υπάρχει στη ροή.

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

περιορίζω

Τα στοιχεία της ροής μπορούν να μειωθούν σε μία μόνο τιμή χρησιμοποιώντας αυτήν τη μέθοδο.

List num = Arrays.asList (4,3,2,5) int even = num.stream (). Filter (x-> x% 2 == 0). Μείωση (0, (res, i) -> res + Εγώ)

Η μεταβλητή res αντιστοιχεί στην τιμή 0 αρχικά, και προστίθεται σε αυτήν.

Προχωρώντας με αυτό το άρθρο στο Stream σε Java

Φιλτράρισμα

Ο κώδικας μπορεί να φιλτραριστεί χρησιμοποιώντας τη μέθοδο ροής. Στο ακόλουθο παράδειγμα, η τιμή των οργάνων φιλτράρεται.

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 = όνομα αυτό.price = τιμή}} δοκιμή δημόσιας τάξης {public static void main (String [] args) {List documentsList = new ArrayList () // Adding Products instrumentsList.add (new Instrument (1, 'Guitar', 15000f)) documentsList.add (νέο Instrument (2, 'Piano', 18000f)) InstrumentsList.add (new Instrument (3, 'Flute', 15000f)) InstrumentsList.add (new Instrument (4, 'Drums', 48000f)) InstrumentsList.add (νέο όργανο ( 5, 'Ukulele', 32000f)) Λίστα InstrumentPriceList2 = devicesList.stream () .filter (p -> p.price> 30000) // φιλτράρισμα δεδομένων. Χάρτης (p-> p.price) // τιμή ανάκτησης .collect ( Collectors.toList ()) // συλλογή ως λίστα System.out.println (InstrumentPriceList2)}}
 Παραγωγή: 

[48000.0, 32000.0]

Προχωρώντας με αυτό το άρθρο στο Stream σε Java

Επανάληψη:

Η επανάληψη μπορεί να πραγματοποιηθεί χρησιμοποιώντας ροή σε java.

import java.util.stream. * δοκιμή δημόσιας τάξης {public static void main (String [] args) {Stream.iterate (1, element-> element + 1) .filter (element-> element% 4 == 0). όριο (6) .forEach (System.out :: println)}}

Παραγωγή:

4

8

12

16

είκοσι

24

Ας ρίξουμε μια ματιά σε ένα άλλο παράδειγμα, για να κατανοήσουμε την έννοια του Stream in Java πιο αποτελεσματικά.

Παράδειγμα:

import java.util. * import java.util.stream. * public class Test {public static void main (String args []) {// δημιουργία μιας λίστας ακέραιων List num = Arrays.asList (6,7,8,9 ) // χρησιμοποιώντας τη μέθοδο χάρτη Λίστα τετραγώνων = num.stream (). map (y -> y * y). collect (Collectors.toList ()) System.out.println (τετράγωνα) // δημιουργία λίστας ημερών συμβολοσειράς = Arrays.asList («Παρασκευή», «Σάββατο», «Κυριακή») // μέθοδος φίλτρου Λίστα res = ημέρες .stream (). filter (s-> s.startsWith ('S')). collect (Collectors.toList ()) System.out.println (res) // ταξινομημένη μέθοδος Εμφάνιση λίστας = days.stream (). sorted (). collect (Collectors.toList ()) System.out.println (display) / / δημιουργία λίστας ακέραιων αριθμών λίστας = Arrays.asList (6,9,5,7,1) // η μέθοδος συλλογής επιστρέφει ένα σύνολο Set sqSet = number.stream (). map (y-> y * y) .collect (Collectors.toSet ()) System.out.println (sqSet) // forΚάθε μέθοδο num.stream (). Map (y-> y * y) .forEach (x-> System.out.println (x)) / / μείωση μεθόδου int even = num.stream (). filter (x-> x% 2 == 0). reduce (0, (result, i) -> result + i) System.out.println (even)}}

Παραγωγή:

[36, 49, 64, 81]

[Σάββατο Κυριακή]

[Παρασκευή Σάββατο Κυριακή]

[81, 49, 1, 36, 25]

36

49

64

81

14

μετάδοση τύπου δεδομένων σε java

Οι ροές επιτρέπουν στον χρήστη να εκτελεί λειτουργίες στα στοιχεία αποτελεσματικά.

Έτσι, έχουμε φτάσει στο τέλος αυτού του άρθρου σχετικά με το 'Stream in Java'. Εάν θέλετε να μάθετε περισσότερα, δείτε το Java Training από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία μάθησης. Το μάθημα εκπαίδευσης και πιστοποίησης Java J2EE και SOA της Edureka έχει σχεδιαστεί για να σας εκπαιδεύσει τόσο για βασικές όσο και για προχωρημένες ιδέες Java μαζί με διάφορα πλαίσια Java όπως το Hibernate & Spring.

Έχετε μια ερώτηση για εμάς; Παρακαλώ αναφέρετέ το στην ενότητα σχολίων αυτού του ιστολογίου και θα επικοινωνήσουμε μαζί σας το συντομότερο δυνατό.