Hem Personliga finanser Med hjälp av Streams and Lambda Expressions i Java - dummies

Med hjälp av Streams and Lambda Expressions i Java - dummies

Video: Week 9 2024

Video: Week 9 2024
Anonim

Java har fina metoder som optimalt utnyttjar strömmar och lambda-uttryck. Med strömmar och lambda-uttryck kan du skapa en monteringslinje. Assembly-line-lösningen använder koncept från funktionell programmering.

Monteringsledningen består av flera metoder. Varje metod tar data, omvandlar data på något sätt, och händer resultaten till nästa metod i rad. Här är en monteringslinje.

En funktionell programmeringsmonteringsledning.

Varje låda representerar en massa råvaror eftersom de omvandlas längs en monteringslinje. Varje pil representerar en metod (eller, metaforiskt, en arbetare på samlingslinjen).

I övergången från den andra rutan till den tredje rutan slocknar en arbetarmetod (metoden filter ) försäljningen av objekt som inte är DVD-skivor. Tänk dig att Lucy Ricardo står mellan andra och tredje lådorna och tar bort varje bok eller cd från samlingslinjen och slänger den slarvigt på golvet.

Parametern till Java filter är en Predikat - ett lambda-uttryck vars resultat är boolean . Metoden filter skär ut objekt som inte passerar lambda-uttryckets true / false -test.

Några funktionella programmeringsmetoder
Metodnamn Medlem av Parameter (s) Resultattyp Resultatvärde
ström Samling (till exempel en ArrayList , objekt) (ingen) Stream En ström som spetsar ut element i samlingen
filter Stream Predikera Stream > En ny ström som innehåller värden för vilka lambda-uttrycket returnerar true map
Stream Funktion Stream En ny ström som innehåller resultaten av att använda lambda-uttrycket i den inkommande strömmen minska
Stream BinaryOperator Typen som används av BinaryOperator Resultatet av att kombinera alla värden i den inkommande strömmen
I övergången från den tredje rutan till den fjärde rutan drar en arbetarmetod (metoden

karta ) pris ut ur varje försäljning . Från den anställdes plats framåt innehåller samlingslinjen endast pris värden. För att vara mer exakt tar Java

map -metoden en Funktion som (försäljning) -> försäljning. getPrice ()

och tillämpar

Funktionen för varje värde i en ström. Så tar metoden map en inkommande ström av försäljning objekt och skapar en utgående ström av pris -värden. I övergången från den fjärde rutan till den femte rutan lägger en arbetarmetod (metoden

reducera ) priserna på DVD-försäljningen.Java reducera -metoden tar två parametrar: Den första parametern är ett initialvärde.

I bilden ovan är initialvärdet

0. 0 . Den andra parametern är en

BinaryOperator . I bilden ovan är

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

Metoden

minska använder sin BinaryOperator för att kombinera värdena från den inkommande strömmen. Det ursprungliga värdet tjänar som utgångspunkt för all kombination. Så, metoden reducerar gör två tillägg. Reduktionsmetoden lägger till två värden från en inkommande ström.

För att jämföra, föreställ dig att ringa metoden

minska (10, 0, (värde1, värde2) -> värde1 * värde2)

med strömmen vars värden inkluderar

3. 0 , 2. 0 och 5. 0 . Den resulterande åtgärden visas nedan Reduktionsmetoden multiplicerar värden från en inkommande ström.

Du kanske har hört talas om Googles MapReduce programmeringsmodell. Likheten mellan programmeringsmodellens namn och Java-metodnamnen

map och minska är inte en slump. Sammanfattningsvis uppgår hela sammansättningen till priserna på DVD-skivor som säljs. Koden ovan innehåller ett komplett program med hjälp av strömmarna och lambda-uttrycken den första bilden ovan.

importera java. text. Number;

importera java. util. Arraylist;

public class TallySales {

statisk statisk tomt huvud (String [] args) {

ArrayList

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

fillTheList (försäljning);

dubbel total = försäljning. ström ()

. filter ((försäljning) -> försäljning. getItem (). motsvarar ("DVD"))

. karta ((försäljning) -> försäljning. getPrice ())

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

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

}

statisk void fillTheList (ArrayList

försäljning) { försäljning. lägg till (ny försäljning ("DVD", 15.00));

försäljning. lägg till (ny försäljning ("bok", 12.00));

försäljning. lägg till (ny försäljning ("DVD", 21.00));

försäljning. lägg till (ny försäljning ("cd", 5, 25));

}

}

Koden kräver Java 8 eller senare. Om din IDE är inställd för en tidigare Java-version kanske du måste tinker med IDE: s inställningar. Du kan till och med behöva ladda ner en nyare version av Java.

Det djupa fältet är ett stort Java-uppdragsdeklaration. Den högra sidan av uttalandet innehåller en sekvens av metodsamtal. Varje metodanrop returnerar ett objekt, och varje sådant objekt är saken före pricken i nästa metodsamtal. Så bildar du monteringslinjen.

Till exempel, nära början på fetstilkoden, heter namnet

försäljning ett ArrayList objekt. Varje ArrayList -objekt har en ström -metod. I koden ovan, försäljning. stream () är ett samtal till det ArrayList objektets ström -metod. Strömmetoden returnerar en instans av Java: s

Stream -klass. (Vad en överraskning!) Så försäljning. ström () avser ett Stream objekt. Få all DVD-försäljning.

Varje

Stream objektet har ett filter -metod. Så försäljning. strömma(). filter ((försäljning) -> försäljning. getItem (). equals ("DVD"))

är ett samtal till metoden

⁣Stream objektets filter Mönstret fortsätter. Metoden

Stream -objektets map returnerar ännu ett annat Stream objekt - ett Stream objekt som innehåller priser. Hämtar priset från varje DVD-försäljning.

Till den

Stream av de priser du tillämpar reducera -metoden, som ger ett värde på dubbel - summan av DVD-priserna. Få det totala priset på alla DVD-försäljningar.

Med hjälp av Streams and Lambda Expressions i Java - dummies

Redaktörens val

Hur man redigerar bilder i Redigera snabbläge för Photoshop Elements 9 - dummies

Hur man redigerar bilder i Redigera snabbläge för Photoshop Elements 9 - dummies

I Photoshop Element, Redigera Snabbt läge är en uppskattad version av Redigera fullt läge som ger grundläggande fixverktyg tillsammans med några unika funktioner, till exempel en förhandsgranskning av bilden. Här är ett steg för steg arbetsflöde som du kan följa i Redigera snabbläge för att reparera dina foton: Välj ett eller flera foton i ...

Hur man redigerar i Photoshop Elements 10: s Snabb Fotoredigeringsläge - dummies

Hur man redigerar i Photoshop Elements 10: s Snabb Fotoredigeringsläge - dummies

Snabb Fotoredigering är en uppskattad version av Full Photo Edit-läge som bekvämt ger grundläggande fixeringsverktyg och kastar i några unika egenskaper, till exempel en förhandsgranskning av bilden. Här är ett steg för steg arbetsflöde som du kan följa i Quick Photo Edit-läget för att reparera dina foton:

Hur man förbättrar Photoshop Elements-bilder med Photo Effects - dummies

Hur man förbättrar Photoshop Elements-bilder med Photo Effects - dummies

Fotoeffekter i Photoshop Elements 11 fungerar som applicera filter; medan dialogrutan Filtreringsgalleri ger dig många alternativ för att tillämpa ett filter, ger den guidade panelen dig filtereffekter och tar dig genom steg för att justera ljusstyrka, ändra färgton och mättnad och göra andra justeringar för att perfekta resultatet. Du ...

Redaktörens val

Hur man tar bort bilder från din Canon EOS 7D Mark II - dummies

Hur man tar bort bilder från din Canon EOS 7D Mark II - dummies

När du granskar en bild, bestämmer du om det är en målvakt. Om du tittar på en bild på din Canon EOS 7D Mark II, gillar du inte bilden av någon anledning kan du radera det. Men borttagning av bilder måste ske med stor försiktighet eftersom uppgiften inte kan ångras. När du har raderat en ...

Hur man redigerar filmer på en Canon EOS 60D - dummies

Hur man redigerar filmer på en Canon EOS 60D - dummies

60D Edit-funktionen gör det härligt enkelt för att ta bort oönskade delar från början eller slutet av en film direkt på din kamera. Denna ombordredigering är praktisk men grundläggande, så förvänta dig inte mirakel. Här är de enkla stegen för att trimma början eller slutet på en film: Klicka på ikonen Redigera (det ser ut ...

Redaktörens val

Hur man arbetar med text i ett Word 2010-tabell - dummies

Hur man arbetar med text i ett Word 2010-tabell - dummies

Text hinner i ett bord i Word 2010 på en cell-vid-cell basis. Varje cell i ett Word-bord kan ha ett eget styckeformat och en egen uppsättning flikar. Grupper av celler, rader och kolumner och hela tabellen kan väljas och formateras samtidigt, om du vill. All standardtext ...

Hur man arbetar med Word 2010: s decimala flik - dummies

Hur man arbetar med Word 2010: s decimala flik - dummies

Du kan använda decimalfliken i Word 2010 till rad upp kolumner av siffror. Även om du kan använda en rätt flik för att göra detta jobb är decimalfliken ett bättre val. I stället för högerjusterad text, som den högra fliken gör, justerar decimalfliken siffror efter deras decimaldel - perioden i ...

Hur man arbetar med flera Word 2010-dokument på samma gång - dummies

Hur man arbetar med flera Word 2010-dokument på samma gång - dummies

O saker Word 2010 kan göra med dokument! Du kan öppna flera Word-dokument samtidigt och arbeta på mycket av dem, växla mellan de olika öppna dokumenten. Öppnar flera Word-dokument samtidigt Det är inte en fråga om hur Word kan fungera på mer än ett dokument åt gången. Nej, ...