Huis Persoonlijke financiën Met behulp van Streams en Lambda Expressions in Java - dummies

Met behulp van Streams en Lambda Expressions in Java - dummies

Video: J-Fall 2015 Speaker Jeroen Borgers - Java 9 Performance 2024

Video: J-Fall 2015 Speaker Jeroen Borgers - Java 9 Performance 2024
Anonim

Java heeft mooie methoden die optimaal gebruik maken van streams en lambda-expressies. Met streams en lambda-expressies kunt u een assemblagelijn maken. De assemblagelijnoplossing maakt gebruik van concepten uit functioneel programmeren.

De assemblagelijn bestaat uit verschillende methoden. Elke methode neemt de gegevens, transformeert de gegevens op de een of andere manier en geeft de resultaten door aan de volgende methode in de rij. Hier is een assemblagelijn.

Een assemblageregel voor functionele programmering.

Elke doos vertegenwoordigt een heleboel grondstoffen wanneer ze langs een assemblagelijn worden getransformeerd. Elke pijl vertegenwoordigt een methode (of, figuurlijk gesproken, een werknemer op de assemblagelijn).

In de overgang van het tweede vak naar het derde vak bijvoorbeeld, analyseert een werknemermethode (de filter -methode) de verkoop van items die geen dvd's zijn. Stel je voor dat Lucy Ricardo tussen de tweede en derde doos staat, en elk boek of elke CD uit de lopende band haalt en zorgeloos op de grond gooit.

De parameter voor Java filter is een predicaat - een lambda-uitdrukking waarvan het resultaat boolean is. De filter -methode filtert items die de waar / vals -test van de lambda-uitdrukking niet doorstaan.

Enkele functionele programmeermethoden
Methode Naam Lid van Parameter (s) Resultaat Type Resultaatwaarde
stroom Verzameling (bijvoorbeeld een ArrayList , object) (geen) Stream Een stream die elementen van de verzameling uitspuugt
filter Stream Predicate Stream > Een nieuwe stream met waarden waarvoor de lambda-expressie true kaart
Stream Functie Stream een nieuwe stream met de resultaten van het toepassen van de lambda-expressie op de inkomende stream verminderen
Stream BinaryOperator Het type gebruikt door de BinaryOperator Het resultaat van het combineren van alle waarden in de inkomende stream
In de overgang van het derde vak naar het vierde vak trekt een werknemermethode (de

kaart -methode) de prijs uit elke verkoop . Vanaf de locatie van die medewerker bevat de assemblagelijn alleen prijs waarden. Om preciezer te zijn, Java's

kaart -methode heeft een functie , zoals (verkoop) -> verkoop. getPrice ()

en past de

functie toe op elke waarde in een stream. Dus de kaart -methode neemt een inkomende stroom van verkoop -objecten en maakt een uitgaande stroom van prijs -waarden. In de overgang van het vierde vak naar het vijfde vak worden de prijzen van dvd-verkopen bij elkaar opgeteld door een werknemermethode (verlagen ).De verlaging -methode van Java heeft twee parameters nodig: De eerste parameter is een beginwaarde.

In de bovenstaande afbeelding is de beginwaarde

0. 0 . De tweede parameter is een

BinaryOperator . In de afbeelding hierboven is de

methode BinaryOperator is (prijs1, prijs2) -> prijs1 + prijs2

de

-verminderingsmethode gebruikt de BinaryOperator om de waarden van de inkomende stream te combineren. De beginwaarde dient als startpunt voor alle combinaties. Dus, de reduceren methode doet twee toevoegingen. De methode verlagen voegt twee waarden toe uit een inkomende stream.

Stel ter vergelijking voor dat de methode

wordt opgeroepen (10. 0, (value1, value2) -> value1 * value2)

met de stream waarvan de waarden

3 bevatten. 0 , 2. 0 en 5. 0 . De resulterende actie wordt hieronder weergegeven De methode verlagen vermenigvuldigt waarden van een binnenkomende stroom.

U hebt misschien gehoord van het MapReduce-programmeermodel van Google. De overeenkomst tussen de naam van het programmeermodel en de Java-methode namen

kaart en verminderen is geen toeval. Als geheel genomen, rangschikt de volledige assemblage de prijzen van verkochte dvd's. De bovenstaande code bevat een compleet programma met behulp van de streams en lambda-expressies de eerste afbeelding hierboven.

java importeren. tekst. Nummer formaat;

java importeren. util. ArrayList;

public class TallySales {

public static void main (String [] args) {

ArrayList

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

fillTheList (verkoop);

dubbel totaal = verkoop. stroom ()

. filter ((verkoop) -> verkoop. getItem (). equals ("DVD"))

. kaart ((verkoop) -> verkoop. getPrice ())

. verminderen (0, (prijs1, prijs2) -> prijs1 + prijs2);

Systeem. uit. println (valuta. formaat (totaal));

}

static void fillTheList (ArrayList

verkoop) { verkoop. toevoegen (nieuwe verkoop ("DVD", 15. 00));

verkoop. toevoegen (nieuwe verkoop ("boek", 12. 00));

verkoop. toevoegen (nieuwe verkoop ("DVD", 21. 00));

verkoop. toevoegen (nieuwe verkoop ("CD", 5.25));

}

}

De code vereist Java 8 of hoger. Als uw IDE is ingesteld voor een eerdere Java-versie, moet u misschien sleutelen aan de instellingen van de IDE. Mogelijk moet je zelfs een nieuwere versie van Java downloaden.

De vetgedrukte tekst is één grote Java-toewijzingsinstructie. De rechterkant van de instructie bevat een reeks methodeaanroepen. Bij elke methode-aanroep wordt een object geretourneerd en elk dergelijk object is het item vóór de punt in de volgende aanroep van de methode. Dat is hoe je de lopende band vormt.

Bijvoorbeeld, in de buurt van het begin van de vetgedrukte code verwijst de naam

verkoop naar een ArrayList -object. Elk ArrayList -object heeft een -stroom -methode. In de bovenstaande code verkopen. stream () is een aanroep van de -stroom -methode van het ArrayList -object. De streammethode retourneert een exemplaar van de klasse

Stream van Java. (Wat een verrassing!) Dus verkopen. stream () verwijst naar een Stream -object. Alle dvd-verkopen ontvangen.

Elk

Stream -object heeft een filter -methode. Dus verkoop. stroom(). filter⁣ ((verkoop) -> verkoop. getItem (). equals ("DVD"))

is een aanroep van de

⁣Stream -object -filter . Het patroon gaat door. De

Stream -objecten -kaart -methode retourneert nog een Stream -object - een Stream -object met prijzen. Krijg de prijs van elke dvd-verkoop.

Aan die

Stream van prijzen past u de verlagen -methode toe, die een dubbele waarde oplevert: het totaal van de dvd-prijzen. De totale prijs van alle dvd-verkopen ophalen.

Met behulp van Streams en Lambda Expressions in Java - dummies

Bewerkers keuze

Hoe u Flash-video maakt en codeert - dummies

Hoe u Flash-video maakt en codeert - dummies

Als de pagina's die u maakt, zijn gewonnen ' t kan worden bekeken op mobiele apparaten (zoals een iPad of een smartphone), kunt u webpagina's maken met prachtige Flash-video. Adobe Flash Professional CS6 heeft een eigen ingebouwde video-encoder. Full-motionvideo in Flash is iets heel moois. U past de video aan voor het bekijken door de doelgroep ...

Hoe een aanpasbare interface te maken in CSS3 - dummies

Hoe een aanpasbare interface te maken in CSS3 - dummies

De grote variëteit en soorten schermen gebruikt om informatie weer te geven, maakt het nodig dat uw CSS3-commando's de gebruiker toestaan ​​om het formaat van de elementen naar wens aan te passen. In de meeste gevallen kunt u de gebruiker eenvoudig toestaan ​​om het element op elke gewenste grootte te maken. Er kunnen zich echter situaties voordoen waarin u de grootte van de grootte moet controleren ...

Hoe u een eenvoudige tabel op uw webpagina maakt - dummies

Hoe u een eenvoudige tabel op uw webpagina maakt - dummies

Tabellen laten u organiseer informatie op uw webpagina en geef het een georganiseerde uitstraling die uw bezoekers nuttig zullen vinden. Bij gebruik zoals bedoeld, hebben tabellen rijen en kolommen. Voor elke spot waar een rij en kolom elkaar kruisen, hebt u een tabelcel. Elke cel kan zijn eigen opmaak hebben: de gegevens erin ...

Bewerkers keuze

Hoe Postproduction Shareninging Filters werken - dummies

Hoe Postproduction Shareninging Filters werken - dummies

Verscherpingsfilters werken in postproductie door de randen (of aangrenzende gebieden met tonaal contrast) te benadrukken aan elkaar) in een afbeelding. Ze creëren een fijne highlight aan de donkere kant van de rand en een piepklein lowlight aan de lichtere kant van de rand. Dit toegevoegde contrast zorgt ervoor dat de randen er scherper uitzien vanaf een ...

HDR Work-Flow voor foto's met één belichting - dummies

HDR Work-Flow voor foto's met één belichting - dummies

In grote lijnen, enkele belichting hoog dynamisch bereik volgt dezelfde workflow als HDR-fotografie tussen haakjes. Er kunnen kleine verschillen zijn, dus hier is een overzicht van de werkstroom: configureer uw camera voor single-shot HDR. Het enige dat u zoekt, is de beste foto die u kunt maken. Besteed aandacht aan de lichtomstandigheden, het onderwerp, beweging en ...

Geavanceerde compacte en superzoomcamera's voor HDR-fotografie - dummies

Geavanceerde compacte en superzoomcamera's voor HDR-fotografie - dummies

Stap omhoog van compacte digitale camera's binnen het budgetbereik, vindt u duurdere compacte digitale camera's voor HDR-fotografie, ook wel high-end compacts, superzoomlenzen en dSLR-look-alikes genoemd. Er zijn zoveel vaak overlappende categorieën dat het je hoofd laat draaien. De twee dingen die deze reeks camera's gemeen hebben, zijn hun ...

Bewerkers keuze

In te schakelen Class Tracking in QuickBooks 2013 - dummies

In te schakelen Class Tracking in QuickBooks 2013 - dummies

Om activity-based costing te gebruiken (ABC ) in QuickBooks 2013 moet u de QuickBooks Class Tracking-functie inschakelen. Met Class Tracking kunt u inkomsten- en onkostentransacties categoriseren als niet alleen vallen in inkomsten- en uitgavenrekeningen, maar ook als vallen in bepaalde klassen. Volg deze stappen om Class Tracking in QuickBooks in te schakelen: Kies Bewerken → Voorkeuren ...

Gebruikt om een ​​exemplaar van een QuickBooks-gegevensbestand te gebruiken - dummies

Gebruikt om een ​​exemplaar van een QuickBooks-gegevensbestand te gebruiken - dummies

Ongeacht of de client verzendt handmatig een accountantskopie van een QuickBooks-gegevensbestand, e-mails een accountantsexemplaar, of verzendt een accountantskopie via de Intuit-bestandsoverdrachtservice, u gebruikt de kopie van de accountant door Bestand → Verzend bedrijfsdossier → Accountantskopie → Open & converteer overzetten te kiezen Bestand commando. Wanneer u deze opdracht kiest, geeft QuickBooks een ...

Hoe Audit Trails te gebruiken in QuickBooks - dummies

Hoe Audit Trails te gebruiken in QuickBooks - dummies

Als u besluit om meerdere gebruikers toegang te geven tot de QuickBooks-gegevens bestand, zult u de QuickBooks Audit Trail-functie waarderen, die bijhoudt wie welke wijzigingen aan het QuickBooks-gegevensbestand aanbrengt. U kunt transacties niet verwijderen uit de lijst of geschiedenis van de audittrail, behalve door gegevens te archiveren en te condenseren. Audit trail inschakelen ...