Σπίτι Προσωπικά Οικονομικά Χρησιμοποιώντας εκφράσεις Streams και Lambda σε Java - dummies

Χρησιμοποιώντας εκφράσεις Streams και Lambda σε Java - dummies

Βίντεο: Fun with Music and Programming by Connor Harris and Stephen Krewson 2024

Βίντεο: Fun with Music and Programming by Connor Harris and Stephen Krewson 2024
Anonim

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

Η γραμμή συναρμολόγησης αποτελείται από διάφορες μεθόδους. Κάθε μέθοδος λαμβάνει τα δεδομένα, μετασχηματίζει τα δεδομένα με κάποιο τρόπο ή άλλα και μεταδίδει τα αποτελέσματά της στην επόμενη στη σειρά μέθοδο. Εδώ είναι μια γραμμή συναρμολόγησης.

Μια λειτουργική γραμμή συναρμολόγησης προγραμματισμού.

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

Για παράδειγμα, κατά τη μετάβαση από το δεύτερο πλαίσιο στο τρίτο πλαίσιο, μια μέθοδος εργαζόμενου (η μέθοδος φίλτρο ) εξαλείφει τις πωλήσεις αντικειμένων που δεν είναι DVD. Φανταστείτε ότι η Lucy Ricardo στέκεται μεταξύ του δεύτερου και του τρίτου κουτιού, αφαιρώντας κάθε βιβλίο ή CD από τη γραμμή συναρμολόγησης και πετάμε το απρόσεκτα στο πάτωμα.

φίλτρου της Java είναι Predicate - μια έκφραση λάμδα με αποτέλεσμα boolean . Η μέθοδος φίλτρου αυξάνει τα στοιχεία που δεν περνούν τη δοκιμή true / false της έκφρασης lambda. Ορισμένες μέθοδοι λειτουργικού προγραμματισμού

Όνομα μεθόδου
Μέλος Παράμετρος Τύπος αποτελέσματος Ροή που εκτοξεύει στοιχεία του φίλτρου συλλογής
Ρεύμα Πρόβλεψη Ροή > Μια νέα ροή που περιέχει τιμές για τις οποίες η έκφραση lambda επιστρέφει true map
Ρεύμα Λειτουργία Ρεύμα Μια νέα ροή που περιέχει τα αποτελέσματα εφαρμογής της έκφρασης lambda στην εισερχόμενη ροή μείωση ροή
BinaryOperator Ο τύπος που χρησιμοποιείται από το BinaryOperator Το αποτέλεσμα του συνδυασμού όλων των τιμών στην εισερχόμενη ροή
χάρτη ) τραβά την τιμή από κάθε πώληση . Από εκείνο τον εργαζόμενο, η γραμμή συναρμολόγησης περιέχει τιμές

. Για να είμαστε ακριβέστεροι, η μέθοδος της της Java παίρνει Λειτουργία όπως (πώληση) -> πώληση. getPrice () και εφαρμόζει τη συνάρτηση

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

. Κατά τη μετάβαση από το τέταρτο πλαίσιο στο πέμπτο πλαίσιο, η μέθοδος των εργαζομένων (η μέθοδος μείωση ) προσθέτει τις τιμές των πωλήσεων DVD.Η μέθοδος μειώνει τη της Java παίρνει δύο παραμέτρους: Η πρώτη παράμετρος είναι μια αρχική τιμή. Στην παραπάνω εικόνα, η αρχική τιμή είναι 0. 0

. Η δεύτερη παράμετρος είναι BinaryOperator . Στην παραπάνω εικόνα, η μέθοδος

μειώνει

τη μέθοδο BinaryOperator είναι (τιμή1, τιμή2) -> τιμή1 + τιμή2

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

reduce κάνει δύο προσθήκες. Η μέθοδος μείωσης προσθέτει δύο τιμές από μια εισερχόμενη ροή. Για σύγκριση, φανταστείτε να καλέσετε τη μέθοδο να μειώσετε (10. 0, (value1, value2) -> value1 * value2)

με τη ροή των οποίων οι τιμές περιλαμβάνουν

3. 0 , 2. 0 και 5. 0 . Η προκύπτουσα ενέργεια εμφανίζεται παρακάτω Η μέθοδος μείωσης πολλαπλασιάζει τις τιμές από μια εισερχόμενη ροή.

Μπορεί να έχετε ακούσει το μοντέλο προγραμματισμού MapReduce της Google. Η ομοιότητα μεταξύ του ονόματος του μοντέλου προγραμματισμού και της μεθόδου Java map

και

μείωση δεν είναι σύμπτωση. Λαμβάνονται ως σύνολο, ολόκληρη η σειρά συναρμολόγησης μέχρι τις τιμές των DVD που πωλήθηκαν. Ο παραπάνω κώδικας περιέχει ένα πλήρες πρόγραμμα χρησιμοποιώντας τις ροές και τις εκφράσεις lambda την πρώτη εικόνα παραπάνω. εισαγωγή java. κείμενο. ΑριθμόςFormat; εισαγωγή java. χρήσιμο. ArrayList; Δημόσια τάξη TallySales { δημόσιο static void κύρια {String [] args) {

ArrayList

πωλήσεις = new ArrayList <> (); Νόμισμα NumberFormat = Αριθμός Φορμά. getCurrencyInstance (); fillTheList (πωλήσεις); διπλό σύνολο = πωλήσεις. stream () . φίλτρο ((πώληση) -> πώληση) getItem () ισούται με ("DVD"))

. map ((πώληση) -> πώληση. getPrice ())

. μείωση (0, 0, (τιμή1, τιμή2) -> τιμή1 + τιμή2)?

Σύστημα. έξω. εκτύπωση (μορφή νομίσματος (σύνολο));

}

πωλήσεις static void fillTheList (ArrayList

πωλήσεις) . προσθέστε (νέα πώληση ("DVD", 15. 00))?

πωλήσεις. προσθέστε (νέα πώληση ("Βιβλίο", 12. 00))?

πωλήσεις. προσθέστε (νέα πώληση ("DVD", 21. 00))?

πωλήσεις. προσθέστε (νέα πώληση ("CD", 5. 25))?

}

}

Ο κώδικας απαιτεί Java 8 ή νεότερη έκδοση. Εάν το IDE έχει οριστεί για μια παλαιότερη έκδοση Java, μπορεί να χρειαστεί να πατήσετε με τις ρυθμίσεις του IDE. Ίσως χρειαστεί να κάνετε λήψη και νεότερης έκδοσης Java.

Η τολμηρή όψη είναι μια μεγάλη εντολή εκχώρησης Java. Η δεξιά πλευρά της εντολής περιέχει μια ακολουθία κλήσεων μεθόδου. Κάθε κλήση μεθόδου επιστρέφει ένα αντικείμενο και κάθε τέτοιο αντικείμενο είναι το πράγμα πριν από την τελεία στην επόμενη κλήση μεθόδου. Έτσι διαμορφώνετε τη γραμμή συναρμολόγησης.

Για παράδειγμα, κοντά στην αρχή του κωδικού με έντονη γραφή, το όνομα

πωλήσεις αναφέρεται σε αντικείμενο

ArrayList

. Κάθε αντικείμενο

ArrayList

έχει μια μέθοδο

ροή

. Στον παραπάνω κώδικα, πωλήσεις

. stream ()

είναι μια κλήση προς τη μέθοδο

του αρχείου της ροής του αντικειμένου ArrayList . Η μέθοδος ροής επιστρέφει μια εμφάνιση της κλάσης Stream της Java. (Τι έκπληξη!) Έτσι πωλήσεις . stream () αναφέρεται σε αντικείμενο Stream . Λήψη όλων των πωλήσεων DVD. Κάθε αντικείμενο Stream

έχει μια μέθοδο φίλτρο . Έτσι πωλήσεις. ρεύμα(). filter9 ((πώληση) -> πώληση) getItem () ισούται ("DVD")) είναι η κλήση της μεθόδου φίλτρου

του αντικειμένου

. Το μοτίβο συνεχίζεται. Η μέθοδος Stream του αντικειμένου χάρτη

επιστρέφει ακόμα ένα αντικείμενο

Stream - αντικείμενο Stream που περιέχει τιμές. Λήψη της τιμής από κάθε πώληση DVD.

Στο Ρεύμα των τιμών εφαρμόζετε τη μέθοδο μείωση , η οποία αποδίδει μια τιμή διπλή - το σύνολο των τιμών DVD. Λήψη της συνολικής τιμής όλων των πωλήσεων DVD.

Χρησιμοποιώντας εκφράσεις Streams και Lambda σε Java - dummies

Η επιλογή των συντακτών

Πρόσβαση χωρίς σύνδεση με το SharePoint Online Workspace - ανδρείκελοι

Πρόσβαση χωρίς σύνδεση με το SharePoint Online Workspace - ανδρείκελοι

Microsoft SharePoint Workspace είναι ο καλλιτέχνης παλαιότερα γνωστός ως Microsoft Office Groove desktop εφαρμογή προσαρμοσμένη για άτομα που θέλουν να συνεργάζονται σε έγγραφα online και offline. Προσφέρεται μαζί με το Office 2010 και παρέχει μια διεπαφή χρήστη παρόμοια με την Εξερεύνηση των Windows για προβολή και επεξεργασία αρχείων και λιστών από μια τοποθεσία του SharePoint. SharePoint Workspace ...

Διατίθενται στη δημοσίευση του SharePoint 2010 - dummies

Διατίθενται στη δημοσίευση του SharePoint 2010 - dummies

Το Site δημοσίευσης του sharePoint 2010 παρέχει μια πλούσια εμπειρία επεξεργασίας καθιστά εύκολο για ένα μη τεχνικό πρόσωπο να δημιουργήσει ιστοσελίδες. Η προσθήκη του περιεχομένου σας στη σελίδα είναι γρήγορη. Το SharePoint παρέχει πολλά είδη δοχείων περιεχομένου που μπορείτε να χρησιμοποιήσετε κατά τη δημιουργία της σελίδας σας, συμπεριλαμβανομένων των πλαισίων κειμένου μιας γραμμής για την εισαγωγή μιας απλής γραμμής κειμένου ...

Για ιστότοπους SharePoint Online - dummies

Για ιστότοπους SharePoint Online - dummies

Μπορείτε να δημιουργήσετε και να αναπτύξετε τρεις κύριους τύπους σελίδων του SharePoint όχι λιγότερο!) - το καθένα με ξεχωριστή λειτουργία: περιεχόμενο, τμήματα Web και εκδόσεις σελίδων. Σελίδα περιεχομένου: Επίσης γνωστή ως σελίδα wiki, αυτό είναι το μαχαίρι ελβετικού στρατού των σελίδων του SharePoint. Μια σελίδα περιεχομένου παρέχει όχι μόνο μια θέση ...

Η επιλογή των συντακτών

Τι είναι ένας χάρτης Java; - ανδρείκελα

Τι είναι ένας χάρτης Java; - ανδρείκελα

Πίνακες και εξειδικευμένες λίστες καθιστούν δυνατή την εκτέλεση μιας εκπληκτικής σειράς εργασιών με την Java. Ωστόσο, υπάρχουν περιπτώσεις όπου μια εφαρμογή Java χρειάζεται κάτι που είναι περισσότερο παρόμοιο με μια βάση δεδομένων, χωρίς να έχει όντως όλες τις αποσκευές της βάσης δεδομένων (όπως η αγορά μιας ξεχωριστής εφαρμογής). Για παράδειγμα, μπορεί να θέλετε να είστε σε θέση ...

Λίγα περίεργα πράγματα για το Java Math - dummies

Λίγα περίεργα πράγματα για το Java Math - dummies

- να έχουν ορισμένους περιορισμούς όταν πρόκειται για υπολογισμό μαθηματικών. Αυτοί οι περιορισμοί είναι συνήθως ασήμαντοι, αλλά μερικές φορές γλιστρίζουν και σας δαγκώνουν. Εδώ είναι τα πράγματα που πρέπει να προσέξετε όταν κάνετε μαθηματικά στην Java. Η

Η επιλογή των συντακτών

Πώς να δουλεύεις με τη νέα γκάμα Blur στο Photoshop CS6 - ανδρείκελα

Πώς να δουλεύεις με τη νέα γκάμα Blur στο Photoshop CS6 - ανδρείκελα

Από τα τρία νέα φίλτρα Blur στο Photoshop CS6, θα έχετε επίσης πρόσβαση σε δύο σχετικούς πίνακες ελέγχου, Εργαλεία θόλωσης και Εφέ θόλωσης, τα οποία περιέχουν τις επιλογές σας. Και τα τρία φίλτρα σας επιτρέπουν να δημιουργήσετε ειδικά εφέ. Blur πεδίου: Δημιουργεί μια συνολική θόλωση στην εικόνα σας. Με την προσθήκη πρόσθετων σημείων ελέγχου ή καρφίτσες, ...

Τρόπος εργασίας με τον πίνακα ιδιοτήτων στο Photoshop CS6 - ανδρείκελα

Τρόπος εργασίας με τον πίνακα ιδιοτήτων στο Photoshop CS6 - ανδρείκελα

, αυτόνομο πλαίσιο Μάσκες στο Photoshop CS6 προς όφελος του πίνακα Ιδιότητες, ο οποίος περιλαμβάνει τώρα τις δυνατότητες των πλαισίων Μάσκες και Προσαρμογές. Δεν υπάρχουν όμως ανησυχίες. Κανένα από τα χαρακτηριστικά που παρείχε προηγουμένως ο πίνακας "Μάσκες" χάθηκε. Ο νέος πίνακας Ιδιότητες σάς δίνει τη δυνατότητα να προσθέσετε, να επεξεργαστείτε και να διαχειριστείτε το στρώμα σας, ...

Πώς να εργάζεστε με το σημείο εξαφάνισης στο Photoshop CS6 - ανδρείκελα

Πώς να εργάζεστε με το σημείο εξαφάνισης στο Photoshop CS6 - ανδρείκελα

Μπορείτε να κάνετε ρεαλιστικές τροποποιήσεις σε εικόνες που έχουν προοπτικά επίπεδα. Με το Σημείο Εκκίνησης, καθορίζετε τα επίπεδα στις εικόνες σας και, στη συνέχεια, χρησιμοποιώντας μια ποικιλία τεχνικών, προσθέστε ή εξαλείψτε αντικείμενα σε αυτά τα αεροπλάνα. Ανοίξτε μια εικόνα που χρειάζεται επεξεργασία. Εάν θέλετε να επικολλήσετε ...