Hjem Personlig finansiering Ved hjelp av Streams and Lambda Expressions i Java - dummies

Ved hjelp av Streams and Lambda Expressions i Java - dummies

Video: Fredrik Vraalsen on Java 8 DOs and DON'Ts 2025

Video: Fredrik Vraalsen on Java 8 DOs and DON'Ts 2025
Anonim

Java har fancy metoder som optimal utnyttelse av strømmer og lambda-uttrykk. Med bekker og lambda-uttrykk kan du opprette en forsamlingslinje. Assembly-line-løsningen bruker begreper fra funksjonell programmering.

Samlebåndet består av flere metoder. Hver metode tar dataene, forvandler dataene på en eller annen måte, og håndterer resultatene til neste metode i kø. Her er en forsamlingslinje.

En funksjonell programmeringsmonteringslinje.

Hver boks representerer en haug med råmaterialer ettersom de forvandles langs en forsamlingslinje. Hver pil representerer en metode (eller, metaforisk, en arbeider på samlebåndet).

For eksempel, i overgangen fra den andre boksen til den tredje boksen, slår en arbeidermetode ( filter -metoden) ut salg av varer som ikke er DVDer. Tenk deg Lucy Ricardo som står mellom den andre og tredje boksen, fjerner hver bok eller CD fra samlebåndet og kaster det uforsiktig på gulvet.

Parameteren til Java-metoden filter er en Predikat - et lambda-uttrykk hvis resultatet er boolean . Metoden filter utløser elementer som ikke passerer lambda-uttrykkets sanne / falske -test.

Noen funksjonelle programmeringsmetoder
Metodenavn Medlem av Parameter (r) Resultattype Resultatverdi
Strøm Samling (for eksempel en ArrayList , objekt) (ingen) Stream En strøm som spretter ut elementene i samlingen
filter Stream Predikere Stream > En ny strøm som inneholder verdier som lambda-uttrykket returnerer true map
Stream Funksjon Stream En ny strøm som inneholder resultatene av å bruke lambda-uttrykket til den innkommende strømmen redusere
Stream BinaryOperator Typen som brukes av BinaryOperator Resultatet av å kombinere alle verdiene i den innkommende strømmen
I overgangen fra den tredje boksen til den fjerde boksen trekker en arbeidermetode (

kartet -metoden) prisen ut av hver salg . Fra den arbeiderens plass fremover inneholder samlebåndet bare pris verdier. For å være mer presis, tar Java

map metoden Funksjon som (salg) -> salg. getPrice ()

og bruker

Funksjon til hver verdi i en strøm. Så kartet -metoden tar en innkommende strøm av salg objekter og lager en utgående strøm av pris -verdier. I overgangen fra fjerde boks til femte boks legger en arbeidermetode (redusere -metoden) prisene på DVD-salg.Java redusere metoden tar to parametere: Den første parameteren er en startverdi.

I bildet ovenfor er initialverdien

0. 0 . Den andre parameteren er en

BinaryOperator . I bildet ovenfor er

redusere metoden BinaryOperator (pris1, pris2) -> pris1 + pris2

Den

redusere metoden bruker sin BinaryOperator for å kombinere verdiene fra den innkommende strømmen. Den opprinnelige verdien tjener som utgangspunkt for hele kombinasjonen. Så, redusere -metoden gjør to tillegg. Reduksjonsmetoden legger til to verdier fra en innkommende strøm.

For å sammenligne, tenk å kalle metoden

redusere (10.0, (verdi1, verdi2) -> verdi1 * verdi2)

med strømmen hvis verdier inkluderer

3. 0 , 2. 0 og 5. 0 . Den resulterende handlingen er vist under Reduksjonsmetoden multipliserer verdier fra en innkommende strøm.

Du har kanskje hørt om Googles MapReduce programmeringsmodell. Likheten mellom programmeringsmodellens navn og Java-metodenavnene

kartet og reduserer er ikke en tilfeldighet. Taken som helhet øker hele forsamlingslinjen prisene på DVD-er som selges. Koden ovenfor inneholder et komplett program ved hjelp av strømmer og lambda-uttrykk det første bildet ovenfor.

importer java. tekst. NumberFormat;

importer java. util. Arraylist;

offentlig klasse TallySales {

offentlig statisk tomrom hoved (String [] args) {

ArrayList

salg = ny ArrayList <> (); NumberFormat valuta = NumberFormat. getCurrencyInstance ();

fillTheList (salg);

dobbelt total = salg. strøm ()

. filter ((salg) -> salg. getItem (). likestiller ("DVD"))

. kart ((salg) -> salg. getPrice ())

. redusere (0, 0, (pris1, pris2) -> pris1 + pris2);

System. ute. println (valuta. format (totalt));

}

statisk tomt fillTheList (ArrayList

salg) { salg. legg til (ny Salg ("DVD", 15. 00));

salg. legg til (ny salg ("bok", 12.00));

salg. legg til (ny salg ("DVD", 21.00));

salg. legg til (ny Salg ("CD", 5, 25));

}

}

Koden krever Java 8 eller nyere. Hvis IDE er angitt for en tidligere Java-versjon, kan det hende du må tinker med IDE-innstillingene. Du må kanskje til og med laste ned en nyere versjon av Java.

Fetfeltet er en stor Java-oppgaveoppgave. Høyre side av setningen inneholder en sekvens av metallsamtaler. Hver metodeanrop returnerer et objekt, og hvert slikt objekt er saken før prikken i neste metodeanrop. Slik danner du forsamlingslinjen.

For eksempel, nær starten på fetfatekoden, refererer navnet

salg til et ArrayList objekt. Hvert ArrayList objekt har en stream metode. I koden ovenfor, salg. stream () er et kall til den ArrayList objektets stream metode. Strømmetoden returnerer en forekomst av Java's

Stream klasse. (Hva en overraskelse!) Så salg. stream () refererer til et Stream objekt. Få all DVD-salg.

Hver

Strøm objektet har en filter metode. Så salg. strøm(). filter ((salg) -> salg. getItem (). likestill ("DVD"))

er et anrop til

⁣Stream objektets filter metode. Mønsteret fortsetter. Metoden

Stream objektets map returnerer enda et Stream objekt - et Stream objekt som inneholder priser. Hent prisen fra hver DVD-salg.

Til den

Strøm av prisene du bruker redusere metoden, som gir en dobbel verdi - summen av DVD-prisene. Få totalprisen på alle DVD-salg.

Ved hjelp av Streams and Lambda Expressions i Java - dummies

Redaktørens valg

Vis resultatene i forhold til et målområde i Excel-oversiktspanelet - dummies

Vis resultatene i forhold til et målområde i Excel-oversiktspanelet - dummies

Noen ganger trenger du målserier i Excel-oversikten og rapportene dine. I enkelte bedrifter er et mål ikke en verdi - det er en rekke verdier. Det vil si at målet er å holde seg innenfor et definert målområde. Tenk deg at du klarer en liten bedrift som selger esker med kjøtt. En del av jobben din er å ...

Slicer Tilpasninger for Slicers på Excel Dashboard - dummies

Slicer Tilpasninger for Slicers på Excel Dashboard - dummies

Hvis du skal bruke slicers på en Excel-dashbordet, bør du gjøre litt formatering for å få dine skiver til å passe til temaet og oppsettet på instrumentpanelet. Følgende diskusjon dekker noen formateringsjusteringer du kan gjøre til dine skiver. Størrelse og plassering av skiver En skiver oppfører seg som en standard Excel ...

Enkel statistikk i Excel Data Analyse - dummies

Enkel statistikk i Excel Data Analyse - dummies

Excel gir flere praktiske, brukervennlige verktøy for å analysere informasjon som du lagrer i et bord, inkludert noen raske og skitne statistiske verktøy. Se på følgende enkle bord. En enkel dagligvareliste. Et av de smaleste og raskeste verktøyene som Excel gir, er muligheten til enkelt å beregne summen, gjennomsnittet, antall, minimum og maksimum av ...

Redaktørens valg

Bruk fanen Filtre til å modifisere QuickBooks 2014 Rapporter - dummies

Bruk fanen Filtre til å modifisere QuickBooks 2014 Rapporter - dummies

Filtrene kategorien er trolig den mest interessante og en nyttig kategori som er levert av dialogboksen QuickBooks Modify Report. Filtre-fanen lar deg sette opp filtre som du kan bruke til å angi hvilken informasjon som oppsummeres i rapporten. For å bruke Filtrer-fanen velger du først feltet du vil ha ...

Bruk skjermfeltet til å modifisere QuickBooks 2012-rapporter - dummies

Bruk skjermfeltet til å modifisere QuickBooks 2012-rapporter - dummies

Hvis du klikker Tilpass rapport- QuickBooks viser dialogboksen Endre rapport, som du kan bruke til å tilpasse en rapport. Når du tilpasser en rapport, endrer du rapportens utseende, layout og informasjonen som den oppsummerer. Dialogboksen Endre rapport ser annerledes ut for ulike rapporttyper. Likevel, hvis du ser forbi ...

Slik bruker du QuickBooks for din hvite papir forretningsplan - dummies

Slik bruker du QuickBooks for din hvite papir forretningsplan - dummies

QuickBooks kan hjelpe deg skriv en hvit-papir forretningsplan. Folk skriver ofte en forretningsplan for hvitt papir når de vet at de trenger en strategisk plan, men ikke ønsker å ta de harde beslutningene som er nødvendige for en strategisk plan. Personen i denne konfronten skriver en lang hvit-papir forretningsplan for å camouflere den fraværende strategiske planen. ...

Redaktørens valg

Canon 60D elektronisk nivåfunksjon - dummies

Canon 60D elektronisk nivåfunksjon - dummies

Ikke hvert fotografi må være nivå med horisonten. Imidlertid lider mange typer bilder (landskap, bybilder og arkitektonisk fotografi) sterkt når kameraet er vippet. Den gammeldags løsningen for å utjevne kameraet ditt er å bruke et boble- eller åndnivå (funnet i fotobutikker) for å kontrollere kameraets justering med ...

Kamerainnstillingsdisplayet på et Canon EOS Rebel T3-serie Kamera-dummies

Kamerainnstillingsdisplayet på et Canon EOS Rebel T3-serie Kamera-dummies

På din Canon Rebel T3 eller T3i, kan du se en samling av tilleggsinnstillingsdata via kamerainnstillingsdisplayet. Denne skjermen er bare et informasjonsverktøy, men; Du kan ikke justere noen av de rapporterte innstillingene fra denne skjermen. For å vise skjermbildet Kamerainnstillinger på T3i, vis først innstillingsinnstillingene ...

Canon EOS 70D Kameraoppsett - dummies

Canon EOS 70D Kameraoppsett - dummies

Her er en oversikt over knappene, ringer og andre eksterne kontroller på Canon EOS 70D-kameraet ditt. Objektivet vist i de følgende figurene er Canon EF-S 18-135mm IS (bildestabiliseringsmodell) som selges med kameraet; Andre linser kan variere.