Casa Finanza personale Usando Streams e Lambda Expressions in Java - dummies

Usando Streams e Lambda Expressions in Java - dummies

Video: Le lambda expression in Java - tutorial italiano 2025

Video: Le lambda expression in Java - tutorial italiano 2025
Anonim

Java ha dei metodi fantasiosi che fanno un uso ottimale degli stream e delle espressioni lambda. Con gli stream e le espressioni lambda, puoi creare una catena di montaggio. La soluzione della linea di assemblaggio utilizza i concetti della programmazione funzionale.

La catena di montaggio comprende diversi metodi. Ogni metodo prende i dati, trasforma i dati in un modo o nell'altro e passa i risultati al successivo metodo in linea. Ecco una catena di montaggio.

Una linea di assemblaggio di programmazione funzionale.

Ogni scatola rappresenta un mucchio di materie prime mentre vengono trasformate lungo una catena di montaggio. Ogni freccia rappresenta un metodo (o, metaforicamente, un lavoratore sulla catena di montaggio).

Ad esempio, nella transizione dalla seconda casella alla terza casella, un metodo di lavoro (il metodo filtro ) elimina le vendite di articoli che non sono DVD. Immagina Lucy Ricardo in piedi tra la seconda e la terza scatola, rimuovendo ogni libro o CD dalla catena di montaggio e gettandolo con noncuranza sul pavimento.

Il parametro del metodo del filtro di Java è un Predicato - un'espressione lambda il cui risultato è booleano . Il metodo filtro elimina gli elementi che non superano il test vero / falso dell'espressione lambda.

Alcuni metodi di programmazione funzionale
Metodo Nome Membro di Parametri Tipo di risultato Valore risultato
flusso Raccolta (ad esempio, un ArrayList , oggetto) (nessuno) Stream Un flusso che sputa elementi della collezione
filtro Stream Predicato Stream > Un nuovo flusso contenente valori per i quali l'espressione lambda restituisce true mappa
Stream Funzione Stream Un nuovo stream che contiene i risultati dell'applicazione dell'applicazione lambda al flusso in entrata ridurre
Stream BinaryOperator Il tipo utilizzato da BinaryOperator Il risultato della combinazione di tutti i valori nel flusso in entrata
Nella transizione dalla terza casella alla quarta casella, un metodo di lavoro (il metodo

mappa ) estrae il prezzo da ogni vendita . Da quel posto di lavoro in poi, la catena di montaggio contiene solo prezzo valori. Per essere più precisi, il metodo

di Java di Java utilizza una funzione come (vendita) -> vendita. getPrice ()

e applica la funzione

a ciascun valore in un flusso. Quindi il metodo mappa accetta uno stream in entrata di vendita oggetti e crea un flusso in uscita di valori prezzo . Nella transizione dalla quarta casella alla quinta casella, un metodo di lavoro (il metodo

riduce ) somma i prezzi delle vendite di DVD.Il metodo di Java riduce prende due parametri: Il primo parametro è un valore iniziale.

Nell'immagine sopra, il valore iniziale è

0. 0 . Il secondo parametro è

Operatore binario . Nell'immagine sopra, il

riduce il metodo Operatore binario è (prezzo1, prezzo2) -> prezzo1 + prezzo2

Il metodo

riduce usa il suo BinaryOperator per combinare i valori del flusso in entrata. Il valore iniziale funge da punto di partenza per tutte le combinazioni. Quindi, il riduci il metodo fa due aggiunte. Il metodo reduce aggiunge due valori da un flusso in entrata.

Per confronto, immagina di chiamare il metodo

riduci (10. 0, (valore1, valore2) -> valore1 * valore2)

con lo stream i cui valori includono

3. 0 , 2. 0 e 5. 0 . L'azione risultante è mostrata sotto Il metodo reduce moltiplica i valori da un flusso in entrata.

Potresti aver sentito parlare del modello di programmazione MapReduce di Google. La somiglianza tra il nome del modello di programmazione e i nomi dei metodi Java mappa e riduce non è una coincidenza. Nel complesso, l'intera assemblea allinea i prezzi dei DVD venduti. Il codice sopra contiene un programma completo che utilizza gli stream e le espressioni lambda della prima immagine sopra.

importazione java. testo. NumberFormat;

importazione java. util. Lista di array;

public class TallySales {

public static void main (String [] args) {

ArrayList

sales = new ArrayList <> (); Valuta NumberFormat = NumberFormat. getCurrencyInstance ();

fillTheList (vendite);

doppio totale = vendite. flusso ()

. filtro ((vendita) -> vendita. getItem (). equals ("DVD"))

. mappa ((vendita) -> vendita. getPrice ())

. ridurre (0, 0, (prezzo1, prezzo2) -> prezzo1 + prezzo2);

Sistema. su. println (formato valuta (totale));

}

static void fillTheList (ArrayList

vendite) { vendite. aggiungi (nuova vendita ("DVD", 15. 00));

vendite. aggiungi (nuova vendita ("Libro", 12. 00));

vendite. aggiungi (nuova vendita ("DVD", 21. 00));

vendite. aggiungi (nuova vendita ("CD", 5. 25));

}

}

Il codice richiede Java 8 o successivo. Se l'IDE è impostato per una versione precedente di Java, potrebbe essere necessario armeggiare con le impostazioni dell'IDE. Potrebbe persino essere necessario scaricare una versione più recente di Java.

La grassetto è una grande dichiarazione di assegnazione Java. Il lato destro dell'istruzione contiene una sequenza di chiamate di metodo. Ogni chiamata al metodo restituisce un oggetto e ognuno di questi oggetti è la cosa prima del punto nella successiva chiamata al metodo. Ecco come si forma la catena di montaggio.

Ad esempio, vicino all'inizio del codice in grassetto, il nome

vendite si riferisce a un oggetto ArrayList . Ogni oggetto ArrayList ha un metodo flusso . Nel codice sopra, vendite. stream () è una chiamata a quel ArrayList metodo stream dell'oggetto. Il metodo stream restituisce un'istanza della classe

Stream di Java. (Che sorpresa!) Quindi vendite. stream () si riferisce ad un oggetto Stream . Ottenere tutte le vendite di DVD.

Ogni oggetto

Stream ha un metodo filtro . Così vendite. flusso (). filter⁣ ((sale) -> sale. getItem (). equals ("DVD"))

è una chiamata al metodo

⁣Stream dell'oggetto filtro . Il modello continua. Il metodo

Stream dell'oggetto mappa restituisce ancora un altro oggetto Stream - un oggetto Stream contenente prezzi. Ottenere il prezzo da ogni vendita di DVD.

A quel

Flusso dei prezzi si applica il riduci il metodo , che produce un valore doppio - il totale dei prezzi del DVD. Ottenere il prezzo totale di tutte le vendite di DVD.

Usando Streams e Lambda Expressions in Java - dummies

Scelta dell'editore

Come utilizzare l'animazione Android per sviluppare la tua app - dummy

Come utilizzare l'animazione Android per sviluppare la tua app - dummy

Potresti decidere di hai bisogno di animazioni fantasiose nella tua app per Android. Ciò mostra alcune ambizioni promettenti! Android ha due tipi di animazione che puoi utilizzare nello sviluppo della tua app: Visualizza animazione: un vecchio sistema in cui ti animi con l'interpolazione o l'animazione fotogramma per fotogramma, come descritto in questo elenco: Interpolazione: ...

Come utilizzare i framework nella tua app per iPad - dummies

Come utilizzare i framework nella tua app per iPad - dummies

Un framework offre codice comune che fornisce funzionalità generica. Il sistema operativo iPhone per iPad offre una serie di framework per incorporare tecnologie, servizi e funzionalità nelle tue app. Ad esempio, il framework UIKit offre supporto per la gestione degli eventi, supporto per il disegno, finestre, viste e controlli che è possibile utilizzare nella propria app. Un framework è progettato per ...

Scelta dell'editore

Immagini su Amazon Elastic Compute Cloud - manichini

Immagini su Amazon Elastic Compute Cloud - manichini

Elastico Compute Cloud (EC2) è una bestia unica; il suo funzionamento è dettato dall'approccio progettuale adottato da Amazon durante la creazione del servizio, e tale design comporta implicazioni di vasta portata su come le applicazioni EC2 dovrebbero essere progettate e gestite. La differenza tra successo e fallimento con EC2 è dettata da quanto bene comprendi il servizio ...

Semplifica la gestione del cloud con CloudMGR - dummies

Semplifica la gestione del cloud con CloudMGR - dummies

CloudMGR è una soluzione di gestione del cloud che ti consente di interagire con AWS usando un'interfaccia alternativa. L'obiettivo generale di CloudMGR è quello di ridurre la confusione che molte persone provano di fronte alla miriade di console AWS e le opzioni a volte sepolte necessarie per controllare i servizi. Questo particolare prodotto si concentra sulle esigenze di ...

Requisiti hardware per gli sviluppatori AWS - manichini

Requisiti hardware per gli sviluppatori AWS - manichini

Indipendentemente dal numero di servizi offerti da AWS, è comunque necessaria una certa quantità di hardware per utilizzare i servizi. La quantità di hardware necessaria quando si lavora con i servizi nel cloud è minima perché l'hardware AWS fa tutto il lavoro pesante. Quando lavori con i servizi localmente, hai bisogno di hardware aggiuntivo perché AWS non è ...

Scelta dell'editore

Come scegliere le immagini per la tua infografica - manichini

Come scegliere le immagini per la tua infografica - manichini

Quando inizi un incarico infografico, di solito inizi con la riunione con il cliente, e quindi ha raccolto i tuoi dati. A volte potresti già avere un'idea brillante per un tema. Fai attenzione, però: la creazione di un tema dovrebbe occupare solo il cinque percento circa del tuo potere creativo. Per farlo funzionare con le tue informazioni sarà ...

Come ritagliare e ritagliare illustrazioni per il tuo infografica - manichini

Come ritagliare e ritagliare illustrazioni per il tuo infografica - manichini

Illustratore, come Photoshop, ti permette di maschera gli elementi del tuo disegno che ti aiuteranno a creare infografie sorprendenti. Illustrator ha due tipi di maschere: ritaglio e opacità. La maschera di ritaglio ti consente di mascherare qualsiasi forma con qualsiasi altra forma semplicemente selezionandoli tutti (tieni premuto Maiusc per selezionare più elementi) e poi scegliendo ...

Come scegliere i caratteri giusti per Infografica - manichini

Come scegliere i caratteri giusti per Infografica - manichini

Nei primi giorni della progettazione infografica, a volte gli artisti un po 'trascinato da tutte le eccitanti possibilità di illustrare le notizie. Gran parte del lavoro è stato disegnato a mano, compresi i titoli. Molte persone hanno usato i caratteri che hanno visto sulle riviste, sulle copertine degli album o sui cartelloni pubblicitari. Questi font sembravano fantastici in quel momento, ...