Hjem Personlig finansiering Ved hjælp af Streams and Lambda Expressions i Java - dummies

Ved hjælp af Streams and Lambda Expressions i Java - dummies

Video: Week 9 2024

Video: Week 9 2024
Anonim

Java har fancy metoder, der optimerer brugen af ​​strømme og lambda udtryk. Med vandløb og lambda udtryk kan du oprette en samlebånd. Assembly-line-løsningen bruger koncepter fra funktionel programmering.

Samlebåndet består af flere metoder. Hver metode tager dataene, omdanner dataene på en eller anden måde og henter resultaterne til den næste metode i køen. Her er en samlebånd.

En funktionel programmeringssamling.

Hver kasse repræsenterer en masse råvarer, da de omdannes langs en samlebånd. Hver pil repræsenterer en metode (eller, metaforisk, en arbejder på samlebåndet).

I overgangen fra den anden boks til den tredje boks udskilles en arbejdsmetode metode (metoden filter ) salg af varer, der ikke er dvd'er. Forestil dig Lucy Ricardo, der står mellem den anden og den tredje boks, fjerner hver bog eller cd fra samlebåndet og smider det skødesløst på gulvet.

Parameteren til Java's filter metode er en Predikat - et lambda udtryk, hvis resultat er boolean . Metoden filter udskifter elementer, der ikke passer lambda-udtryksværdien true / false .

Nogle funktionelle programmeringsmetoder
Metodenavn Medlem af Parameter (r) Resultattype Resultatværdi
strøm Samling (for eksempel en ArrayList , objekt) (ingen) Stream En strøm, der springer ud af elementer i samlingen
filter Stream Predikér Stream > En ny strøm indeholdende værdier, for hvilke lambda-udtrykket returnerer true map
Stream Funktion Stream En ny strøm, der indeholder resultaterne af at anvende lambda-udtrykket til den indkommende strøm reducere
Stream BinaryOperator Den type, der bruges af BinaryOperator Resultatet af at kombinere alle værdierne i den indkommende strøm
I overgangen fra den tredje boks til den fjerde boks trækker en arbejdsmetode metode (metoden

map ) prisen ud af hver salg . Fra arbejdstagerens sted fremover indeholder samlebåndet kun pris værdier. For at være mere præcis tager Java's

map metode Funktion som f.eks. (salg) -> salg. getPrice ()

og anvender

Funktionen til hver værdi i en strøm. Så metoden map tager en indkommende strøm af salg objekter og skaber en udgående strøm af pris værdier. I overgangen fra den fjerde boks til den femte boks tilføjer en arbejdstager metode (reducere metoden) prisen på dvd-salg.Java's reducere metode tager to parametre: Den første parameter er en indledende værdi.

I billedet ovenfor er den indledende værdi

0. 0 . Den anden parameter er en

BinaryOperator . I billedet ovenfor er

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

reducere metoden bruger sin BinaryOperator til at kombinere værdierne fra den indkommende strøm. Den indledende værdi tjener som udgangspunkt for hele kombinationen. Så reducer -metoden gør to tilføjelser. Reduktionsmetoden tilføjer to værdier fra en indgående strøm.

For at sammenligne, forestill dig at kalde metoden

reducere (10.0, (værdi1, værdi2) -> værdi1 * værdi2)

med strømmen, hvis værdier indbefatter

3. 0 , 2. 0 og 5. 0 . Den resulterende handling vises under Reduktionsmetoden multiplicerer værdier fra en indgående strøm.

Du har måske hørt om Googles MapReduce programmeringsmodel. Ligheden mellem programmeringsmodellens navn og Java-metodenavnene

Kort og Reducer er ikke en tilfældighed. Taget som helhed, opsamler hele forsamlingslinjen priserne på solgte dvd'er. Koden ovenfor indeholder et komplet program ved hjælp af streams og lambda udtryk det første billede ovenfor.

importer java. tekst. TalFormat;

importer java. util. ArrayList;

offentlig klasse TallySales {

offentlig statisk tomt hoved (String [] args) {

ArrayList

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

fillTheList (salg);

dobbelt total = salg. strøm ()

. filter ((salg) -> salg. getItem (). svarer til ("dvd"))

. kort ((salg) -> salg. getPrice ())

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

System. ud. println (valuta. format (total));

}

statisk void fillTheList (ArrayList

salg) { salg. tilføj (ny Salg ("DVD", 15. 00));

salg. tilføj (ny salg ("bog", 12,00));

salg. tilføj (ny Salg ("DVD", 21.00));

salg. Tilføj (ny Salg ("CD", 5, 25));

}

}

Koden kræver Java 8 eller nyere. Hvis din IDE er indstillet til en tidligere Java-version, skal du muligvis tinker med IDE'ens indstillinger. Du skal muligvis endda downloade en nyere version af Java.

Fetfeltet er en stor Java-opgaveopgørelse. Den højre side af sætningen indeholder en række metodeopkald. Hver metodeopkald returnerer et objekt, og hvert sådant objekt er den ting, der er før prikken i det næste metodeopkald. Sådan udgør du samlebåndet.

For eksempel henviser navnet

salg i nærheden af ​​starten af ​​boldfoden til et ArrayList objekt. Hver ArrayList objekt har en stream metode. I koden ovenfor, salg. stream () er et kald til den ArrayList objektets stream metode. Strømmetoden returnerer en forekomst af Java's

Stream klasse. (Hvilken overraskelse!) Så salg. stream () refererer til et Stream objekt. Få alle DVD-salg.

Hver

Stream objekt har en filter metode. Så salg. strøm(). filter ((salg) -> salg. getItem (). liges ("DVD"))

er et opkald til

⁣Stream objektets filter metode. Mønsteret fortsætter. Metoden

Stream objektets map returnerer endnu et Stream objekt - et Stream objekt, der indeholder priser. Hent prisen fra hvert DVD-salg.

Til den

Stream af de priser, du anvender reducer -metoden, som giver en dobbelt -værdi - summen af ​​dvd-priserne. Hent den samlede pris på alle DVD-salg.

Ved hjælp af Streams and Lambda Expressions i Java - dummies

Valg af editor

Fuld redigeringsfunktion i Photoshop Elements 10 - dummies

Fuld redigeringsfunktion i Photoshop Elements 10 - dummies

Fuld fotoredigeringsfunktion tilbyder bundter af værktøjer, som du kan bruge at redigere dine billeder, fra korrektionsværktøjer til fastsættelse af farve og klarhed til filtre, lag og meget mere for at ændre eksisterende fotos eller skabe helt originale billeder fra bunden. Men alle disse værktøjer gør også Komplet fotoredigeringstilstand kompleks. Du kan flytte ind i ...

Generelle blandingsformer i Photoshop Elements - dummies

Generelle blandingsformer i Photoshop Elements - dummies

Elementer spænder over 25 blandingstilstande. Blend modes påvirker hvordan farver interagerer mellem lag og også hvordan farver interagerer, når du anvender maling på et lag. Ikke alene gør blandingstilstande interessante effekter, men du kan også nemt anvende, redigere eller fjerne blandingsfunktioner uden at røre dine billedpixel. De forskellige blandingstilstande ...

Geometriske formindstillinger i Photoshop Elements - dummies

Geometriske formindstillinger i Photoshop Elements - dummies

Geometriindstillinger hjælpe med at definere, hvordan dine figurer ser ud. Klik på nedpegepilen i værktøjsindstillingerne i Elements for at få adgang til de geometriske indstillinger, der beskrives i det følgende. Rektangulære og afrundede rektangel geometriske indstillinger Her er geometriske indstillinger for rektangel og afrundede rektangelformer: Ubegrænset: Giver dig mulighed for at få fri tøj til at tegne en ...

Valg af editor

Sådan bygger du tabeller i HTML5 - dummies

Sådan bygger du tabeller i HTML5 - dummies

Sommetider indeholder din webside data bedst fremlagt i et bord . Du kan bruge HTML5's komplette bordsystem til at oprette tabeller som den i dette eksempel: Den grundlæggende struktur i et bord i HTML-format er rimeligt let at forstå; Tjek koden, der oprettede tabellen i eksemplet:

Hvordan man ændrer gentagne baggrunde på CSS3-steder - dummier

Hvordan man ændrer gentagne baggrunde på CSS3-steder - dummier

Der er situationer, hvor man kun vil en enkelt kopi af et baggrundsbillede på dit CSS3-websted. Det kan være, at billedet du har brugt er noget, der ikke gentager sig godt eller er stort nok til, at du virkelig ikke vil have det gentaget. Følgende procedure viser en teknik, du kan bruge til at fortælle ...

Hvordan man opbygger en webside skabelon fra scratch-dummies

Hvordan man opbygger en webside skabelon fra scratch-dummies

Standardværktøjet på tværs af digitalt agenturer og interne afdelinger til opbygning af website grafik er Adobe Photoshop. Selvom fyrværkeri er optimeret og målrettet til at producere web-grafiske kildefiler, er det bare ikke fanget, sandsynligvis på grund af den massive genoplæringsindsats ville det medføre, at hele afdelinger gør omskifteren. At oprette et nyt ...

Valg af editor

Sådan godkendes medlemmer til din LinkedIn Group - dummier

Sådan godkendes medlemmer til din LinkedIn Group - dummier

Som flere og flere mennesker finder ud af din ny LinkedIn-gruppe, og som medlemmer begynder at deltage, kan du opleve, at nogle af de personer, der har klikket på linket for at deltage, ikke er på din forhåndsgodkendte liste. Måske er de mennesker, du ikke har forstået var på LinkedIn, eller du var ikke klar over, at de var gyldige grupper ...

Hvordan man tilføjer billeder til kroppen i din LinkedIn-profil til Visual Social Marketing - dummies

Hvordan man tilføjer billeder til kroppen i din LinkedIn-profil til Visual Social Marketing - dummies

Ud over et profilbillede giver LinkedIn brugere mulighed for at forbedre de visuelle sociale markedsføringselementer i deres profiler ved at tilføje billeder til deres profilprofil. Du kan tilføje billeder til ethvert afsnit i din LinkedIn-profil. Tilføjelse af billeder til din profil kan hjælpe dig med at fortælle din historie visuelt og ...

Sådan tilføjer du en virksomhedsside til LinkedIn - dummies

Sådan tilføjer du en virksomhedsside til LinkedIn - dummies

, Når du har opfyldt kravene til oprettelse en virksomhedsside på LinkedIn, er det tid til at komme i gang ved at tilføje selskabets side til Linkedins system. For at oprette din virksomhedsside skal du blot følge disse trin: