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 2024

Video: Fredrik Vraalsen on Java 8 DOs and DON'Ts 2024
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

Vanlige visuelle studio-tastaturgenveier - dummier

Vanlige visuelle studio-tastaturgenveier - dummier

Du kan få tilgang til mange av funksjonene du bruker i Visual Studio til Lag en Silverlight-applikasjon gjennom tastaturgenveier. Her er de vanlige snarveiene som hjelper deg med å utføre oppgaver raskt i Visual Studio. Tastatur snarvei Handling Ctrl + Alt + F1 Åpne Visual Studio Documentation Ctrl + Shift + B Bygg programmet Ctrl + F5 Kjør prosjektet Ctrl + Alt + X Åpne verktøykassen hvis ...

Velg riktig format for e-postmarkedsføringsmeldingen din - dummies

Velg riktig format for e-postmarkedsføringsmeldingen din - dummies

Som Du komponerer markedsførings-e-postene dine, husk at formatet på e-posten din visuelt kommuniserer hovedideen til innholdet før publikum selv begynner å lese det. Forbrukerne forventer at formatet på e-posten din samsvarer med informasjonen den inneholder, slik at bruk av riktig format bidrar til å bygge publikums tillit. Velg ...

Kombinere flere samtaler til handling i din markedsføring e-post - dummies

Kombinere flere samtaler til handling i din markedsføring e-post - dummies

Din e-postmarkedsføringslisten består sannsynligvis av prospekter og kunder i ulike stadier av kjøpesyklusen med litt forskjellige interesser, så en del av publikum vil aldri være klar til å reagere umiddelbart på hver handling. Selv om alle på din e-postliste er klare til handling, er dine anrop til handling ...

Redaktørens valg

Opprett en Pivot-tabell YTD-totalvisning for Excel-rapporten - dummies

Opprett en Pivot-tabell YTD-totalvisning for Excel-rapporten - dummies

En nyttig rapportvisning I et Excel-pivottabell er YTD-totalsvisningen. Noen ganger er det nyttig å fange et løp-total-visning for å analysere bevegelsen av tall på en årlig basis (YTD) basis. Denne figuren illustrerer et pivottabell som viser en løpende total omsetning per måned for hvert år. I denne visningen er du ...

Opprett en pivottabel ved hjelp av Excels interne datamodell - dummies

Opprett en pivottabel ved hjelp av Excels interne datamodell - dummies

I enkelte tilfeller vil du kanskje opprett et pivottabell fra grunnen ved hjelp av Excels eksisterende interne datamodell som kildedata. Her er trinnene for å gjøre det: Velg Sett inn → PivotTable fra båndet. Dialogboksen Create PivotTable åpnes. Velg alternativet Bruk en ekstern datakilde, som vist, og klikk deretter på ...

Hvordan lage en standard snikker i Power Pivot - dummies

Hvordan lage en standard snikker i Power Pivot - dummies

Slicers tilbyr et brukervennlig grensesnitt med som du kan filtrere en Power Pivot pivottabell. Det er på tide å lage din første slicer. Bare følg disse trinnene:

Redaktørens valg

Alarmhendelsen i GameMaker: Studio-dummies

Alarmhendelsen i GameMaker: Studio-dummies

Alarmer er utmerket for når du vil ha tid Handlinger i din spill i GameMaker: Studio. For eksempel, hvis du vil at spilleren bare skal skyte kuler en gang hvert annet sekund, kan du sette en alarm for det. Hvis du vil når nye fiendtlige fly vises, kan du sette en alarm for det ...

Flytt retningsaktive handlinger i GameMaker: Studio - dummies

Flytt retningsaktive handlinger i GameMaker: Studio - dummies

I GameMaker: Studio, Flytt-fanen er den første kategorien i vinduet Objektegenskaper. Her er en liste over hver av handlingene du kan tilordne objektene. I følgende definisjoner brukes begrepet Instance for å referere til hva handlingen påvirker. Men du konfigurerer handlingen i objektet ...

Andre hendelser i GameMaker: Studio - dummies

Andre hendelser i GameMaker: Studio - dummies

I GameMaker: Studio, Andre hendelser er de som ikke anses verdige av sitt eget sted på menyen Event. Disse andre hendelsene kan være ganske kjempebra. Menyelementene er ganske mye selvforklarende, så det er ikke nødvendig med detaljer her. For fullstendige beskrivelser av hver av disse elementene, kan du alltid trykke F1 i GameMaker og ...