Zuhause Persönliche Finanzen Mit Streams und Lambda-Ausdrücken in Java - Dummies

Mit Streams und Lambda-Ausdrücken in Java - Dummies

Video: Java-Übung 10 (SS 2019): Funktionale Programmierung, Lambda-Ausdrücke, Streams 2024

Video: Java-Übung 10 (SS 2019): Funktionale Programmierung, Lambda-Ausdrücke, Streams 2024
Anonim

Java verfügt über ausgefallene Methoden, die Streams und Lambda-Ausdrücke optimal nutzen. Mit Streams und Lambda-Ausdrücken können Sie eine Fließband erstellen. Die Fließbandlösung verwendet Konzepte der funktionalen Programmierung.

Die Montagelinie besteht aus mehreren Methoden. Jede Methode übernimmt die Daten, transformiert die Daten auf die eine oder andere Art und gibt ihre Ergebnisse an die nächste Methode in der Reihe weiter. Hier ist eine Montagelinie.

Eine funktionale Programmierungslinie.

Jede Schachtel repräsentiert eine Reihe von Rohmaterialien, während sie entlang einer Montagelinie umgewandelt werden. Jeder Pfeil stellt eine Methode dar (oder metaphorisch einen Arbeiter in der Fertigungsstraße).

Beim Übergang vom zweiten zum dritten Feld sortiert beispielsweise eine Worker-Methode (die -Filter -Methode) Verkäufe von Elementen aus, die keine DVDs sind. Stellen Sie sich vor, dass Lucy Ricardo zwischen der zweiten und dritten Kiste steht, jedes Buch oder jede CD aus dem Fließband entfernt und es achtlos auf den Boden wirft.

Der Parameter für die -Filter -Methode von Java ist ein -Prädikat - ein Lambda-Ausdruck, dessen Ergebnis boolesch ist. Die -Filter -Methode sortiert Elemente aus, die den true / false -Test des Lambda-Ausdrucks nicht bestehen.

Einige funktionale Programmiermethoden
Methodenname Member von Parameter Ergebnistyp Ergebniswert
stream Sammlung (z. B. ArrayList , Objekt) (keiner) Stream Ein Stream, der Elemente der Sammlung ausspuckt
Filter Stream Prädikat Stream > Ein neuer Stream mit Werten, für die der Lambda-Ausdruck true zurückgibt map
Stream Funktion Stream Ein neuer Stream mit den Ergebnissen der Anwendung des Lambda-Ausdrucks auf den eingehenden Stream reduce
Stream BinaryOperator Der vom BinaryOperator verwendete Typ Das Ergebnis der Kombination aller Werte im eingehenden Stream
Beim Übergang vom dritten zum vierten Feld zieht eine Worker-Methode (

map -Methode) den -Preis aus jedem Verkauf . Ab diesem Arbeitsplatz enthält die Montagelinie nur Preis -Werte. Um genauer zu sein, benötigt die

map Methode von Java eine Funktion wie (Verkauf) -> Verkauf. getPrice ()

und wendet die

-Funktion auf jeden Wert in einem Stream an. Die map -Methode verwendet also einen eingehenden Stream von sale -Objekten und erstellt einen abgehenden Stream mit price -Werten. Beim Übergang von der vierten in die fünfte Box addiert eine Worker-Methode (die

reduce -Methode) die Preise für DVD-Verkäufe zusammen.Die Methode reduce von Java benötigt zwei Parameter: Der erste Parameter ist ein Anfangswert.

Im obigen Bild ist der Anfangswert

0. 0 . Der zweite Parameter ist ein

BinaryOperator . Im obigen Bild ist der

-Methode des -Moduls BinaryOperator ist

(price1, price2) -> price1 + price2

Die reduce -Methode verwendet seinen BinaryOperator , um die Werte aus dem eingehenden Stream zu kombinieren. Der Anfangswert dient als Ausgangspunkt für alle Kombinationen. Die Methode reduce führt also zwei Additionen aus.

Die Methode reduce fügt zwei Werte aus einem eingehenden Stream hinzu.

Stellen Sie sich zum Vergleich vor, dass Sie die Methode

aufrufen, um (10. 0, (value1, value2) -> value1 * value2)

mit dem Stream zu ersetzen, dessen Werte 3 enthalten. 0 , 2. 0 und 5. 0 . Die resultierende Aktion wird unterhalb von

angezeigt. Die Methode reduce multipliziert Werte aus einem eingehenden Stream.

Sie haben vielleicht schon von Googles MapReduce-Programmiermodell gehört. Die Ähnlichkeit zwischen dem Namen des Programmiermodells und den Java-Methodennamen map und reduce ist kein Zufall.

Insgesamt betrachtet werden die Preise der verkauften DVDs durch die gesamte Montage erhöht. Der obige Code enthält ein vollständiges Programm, das die Streams und Lambda-Ausdrücke das erste obige Bild verwendet.

importiert Java. Text. Zahlenformat;

importiert Java. Nutz. Anordnungsliste;

öffentliche Klasse TallySales {

public static void main (String [] Argumente) {

ArrayList sales = new ArrayList <> ();

NumberFormat currency = Zahlenformat. getCurrencyInstance ();

fillTheList (Verkäufe);

doppelte Summe = Umsatz. stream ()

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

. Karte ((Verkauf) -> Verkauf. getPrice ())

. reduzieren (0, 0, (Preis1, Preis2) -> Preis1 + Preis2);

System. aus. println (Währung. Format (gesamt));

}

static void fillTheList (ArrayList Verkäufe) {

Verkäufe. add (neuer Sale ("DVD", 15. 00));

Umsatz. add (neuer Sale ("Book", 12. 00));

Umsatz. add (neuer Verkauf ("DVD", 21. 00));

Umsatz. add (neuer Verkauf ("CD", 5. 25));

}

}

Der Code erfordert Java 8 oder höher. Wenn Ihre IDE für eine frühere Java-Version eingestellt ist, müssen Sie möglicherweise mit den Einstellungen der IDE herumspielen. Sie müssen möglicherweise sogar eine neuere Version von Java herunterladen.

Die Fettschrift ist eine große Java-Zuweisungsanweisung. Die rechte Seite der Anweisung enthält eine Sequenz von Methodenaufrufen. Jeder Methodenaufruf gibt ein Objekt zurück, und jedes solche Objekt ist das Ding vor dem Punkt im nächsten Methodenaufruf. So bilden Sie die Montagelinie.

Beispielsweise verweist der Name sales in der Nähe des Beginns des Fettdruckcodes auf ein ArrayList -Objekt. Jedes ArrayList -Objekt verfügt über eine Stream -Methode. Im obigen Code Umsatz. stream () ist ein Aufruf der ArrayList Objekt Stream Methode.

Die stream-Methode gibt eine Instanz der Stream -Klasse von Java zurück. (Was für eine Überraschung!) So Umsatz. stream () bezieht sich auf ein Stream -Objekt.

Alle DVD-Verkäufe erhalten.

Jedes Stream Objekt hat eine Filter Methode. Also

Umsatz. Strom(). filter⁣ ((Verkauf) -> Verkauf. getItem (). equals ("DVD"))

ist ein Aufruf der Filter Methode des ⁣Stream Objekts.

Das Muster wird fortgesetzt. Die map -Methode des Stream -Objekts gibt ein weiteres Stream -Objekt zurück - ein Stream -Objekt mit Preisen.

Den Preis von jedem DVD-Verkauf erhalten.

Zu ​​diesem Stream der Preise wenden Sie die Methode reduce an, die einen doppelten Wert ergibt - die Summe der DVD-Preise.

Den Gesamtpreis aller DVD-Verkäufe erhalten.

Mit Streams und Lambda-Ausdrücken in Java - Dummies

Die Wahl des Herausgebers

Tipps für die Auswahl von Feldtypen in Access 2013 - Dummies

Tipps für die Auswahl von Feldtypen in Access 2013 - Dummies

Beim Entwerfen einer Datenbank in Access 2013 Entscheiden Sie, welcher Typ jedes Feld sein wird. Access bietet 12 Feldtypen, aus denen Sie auswählen können. Wählen Sie den Feldtyp aus, der am besten die Daten beschreibt, die Sie im Feld speichern möchten, und das funktioniert für den Analysetyp, den Sie benötigen, um die ...

Nützliche Funktionen in Access 2007 - Dummies

Nützliche Funktionen in Access 2007 - Dummies

Obwohl Access 2007 über mehrere integrierte Funktionen verfügt, dürfen Sie nicht mehr verwenden. als ein paar von ihnen in Ihren Berichten. Dennoch, wenn Sie nicht wissen, dass sie verfügbar sind, könnten Sie viele der Funktionen vermissen, die Sie wirklich nützlich finden könnten. Obwohl diese Liste weit davon entfernt ist, umfassend zu sein, zeigt diese Tabelle eine Reihe von Funktionen ...

Sichern Ihrer Access 2003-Datenbank als MDE-Datei - Dummies

Sichern Ihrer Access 2003-Datenbank als MDE-Datei - Dummies

Wenn Sie eine Access 2003-Datenbank erstellen. andere Leute - besonders Leute, die ein wenig ratlos über Access sind - Sie können Ihre Datenbank sperren, um andere Benutzer daran zu hindern, Änderungen vorzunehmen, die sie möglicherweise beschädigen. Sie können Sicherheit in Form von Benutzernamen und Passwörtern hinzufügen, aber ...

Die Wahl des Herausgebers

Ruby Datentypen und Variablen - Dummys

Ruby Datentypen und Variablen - Dummys

Variablen in Ruby werden mit alphanumerischen Zeichen und dem Unterstrich (_) bezeichnet. und kann nicht mit einer Zahl oder einem Großbuchstaben beginnen. Variablen, wie in der Algebra, sind Schlüsselwörter, die verwendet werden, um Datenwerte für eine spätere Verwendung zu speichern. Obwohl sich die in einer Variablen gespeicherten Daten ändern können, ist der Variablenname immer derselbe. Denken Sie an ...

Mit Array und Hash Built-in und verwandten Methoden - Dummies

Mit Array und Hash Built-in und verwandten Methoden - Dummies

Ruby hat viele integrierte Klassen, aber vielleicht die nützlichsten Objekte für die Speicherung anderer Daten sind die Container-Klassen Array und Hash. Sie können viel Zeit beim Codieren sparen, wenn Sie sich daran erinnern, dass jede dieser Klassen viele nützliche Methoden für den Zugriff und die Manipulation ihrer Inhalte hat. Array-Grundlagen Verwenden Sie Arrays für Listen ...

Wie man Scratch-Grafiken in andere Anwendungen exportiert - Dummies

Wie man Scratch-Grafiken in andere Anwendungen exportiert - Dummies

Scratch-Benutzer können Grafiken für andere Anwendungen entwerfen und exportieren wie Microsoft Word und PowerPoint. Eine einfach zu findende Schaltfläche (aus Datei hochladen) ermöglicht es Benutzern, Grafiken in Scratch zu importieren, aber viele Benutzer wissen nicht, wie sie Grafiken auf einem Computer speichern und die Bilder wie andere Grafikdateien exportieren können. Öffnen Sie ein Scratch-Projekt. ...

Die Wahl des Herausgebers

Hinzufügen von Fußnoten und Endnoten in Word 2016 - dummies

Hinzufügen von Fußnoten und Endnoten in Word 2016 - dummies

Fußnoten und Endnoten in Word 2016 enthalten Bonusinformationen, eine Klarstellung oder beiseite, um Text auf einer Seite zu ergänzen. Jede ist im Text durch eine hochgestellte Zahl oder einen Buchstaben gekennzeichnet1. 1 Siehe? Es klappt! Der Unterschied zwischen einer Fußnote und einer Endnote liegt in der Platzierung: Eine Fußnote wird unten angezeigt ...

Wie man Datum und Uhrzeit in Word 2013 Dokument hinzufügt - Dummies

Wie man Datum und Uhrzeit in Word 2013 Dokument hinzufügt - Dummies

Sie haben wahrscheinlich Leute Sie möchten das aktuelle Datum und die aktuelle Uhrzeit kennen oder möchten einfach das Datum oder die Uhrzeit oder beide in Ihr Word 2013-Dokument einfügen. Bis auf wenige Ausnahmen sind Zeitreisende die einzigen, die sich für das laufende Jahr erkundigen. Aber vielleicht brauchen Sie es in Ihrem Dokument ...

Wie man Datum und Uhrzeit zu einem Word 2010 Dokument hinzufügt - Dummies

Wie man Datum und Uhrzeit zu einem Word 2010 Dokument hinzufügt - Dummies

Sie wahrscheinlich haben Leute, die das aktuelle Datum und die Uhrzeit in Ihrem Word 2010-Dokument kennen möchten, oder vielleicht möchten Sie nur das Datum oder die Uhrzeit (oder beides) in Ihr Dokument einfügen. Word hat viele Tricks, um es möglich zu machen. Festhalten des aktuellen Datums oder der aktuellen Uhrzeit in einem Word-Dokument Abgesehen von der Suche ...