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 2025

Video: Java-Übung 10 (SS 2019): Funktionale Programmierung, Lambda-Ausdrücke, Streams 2025
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

ÜBen Mathe-Fragen für die Praxis: Sequenzen - Dummies

ÜBen Mathe-Fragen für die Praxis: Sequenzen - Dummies

Wenn Sie eine Frage zur Praxis Core-Prüfung beantworten Wenn Sie eine arithmetische oder geometrische Sequenz lösen müssen, denken Sie daran: Es geht darum, regelmäßige Muster zu finden - und manchmal rückwärts zu arbeiten. In den folgenden Übungsfragen fängst du damit an, einen bestimmten Begriff in einer Folge zu finden (einfach: suche einfach nach dem Unterschied zwischen jedem ...

ÜBen Mathematische Fragen für die Praxis: Ähnliche und kongruente Formen - Dummies

ÜBen Mathematische Fragen für die Praxis: Ähnliche und kongruente Formen - Dummies

Auch wenn zwei Formen aussehen identisch, können sie nicht sein. Zum Beispiel können Sie bei der Praxis Core-Prüfung auf eine Frage stoßen, bei der zwei Formen gleich aussehen, aber es wird Ihnen gesagt, sie seien "ähnlich". " Was bedeutet das? Was ist, wenn sie als "kongruent" gekennzeichnet sind? Wenn Sie sich nicht sicher sind, sollten die folgenden Übungsfragen (und ihre Erklärungen) ...

ÜBen Mathematische Fragen für die Praxis: Vereinfachen eines algebraischen Ausdrucks - Dummys

ÜBen Mathematische Fragen für die Praxis: Vereinfachen eines algebraischen Ausdrucks - Dummys

Einige algebraische Ausdrücke auf der Praxis Core Prüfung kann einschüchternd aussehen, und Sie können sogar auf sie aufgeben und weitermachen. Wie Sie in den folgenden Übungsfragen sehen werden, können Sie jedoch einige einfache Techniken verwenden, wie das Faktorisieren und Kombinieren von ähnlichen Begriffen, um sie zu lösen. Übungsfragen Welche der folgenden ist die vereinfachte ...

Die Wahl des Herausgebers

Fotografieren im Sportmodus mit einer Canon EOS Rebel T3-Kamera - Dummies

Fotografieren im Sportmodus mit einer Canon EOS Rebel T3-Kamera - Dummies

Der Sportmodus der Canon Rebel T3 und T3i führt zu einer Reihe von Einstellungen, mit denen Sie sich bewegende Motive fotografieren können. Zunächst wählt die Kamera eine kurze Verschlusszeit aus, die zum Stoppen der Bewegung benötigt wird. "Farben, Schärfe und Kontrast sind alle im Sportmodus Standard, wobei keine der Anpassungen im Portrait ...

Aufnahme von Bildern im Nahaufnahmemodus mit einer Canon EOS Rebel T3-Kamera

Aufnahme von Bildern im Nahaufnahmemodus mit einer Canon EOS Rebel T3-Kamera

Der Nahaufnahme-Modus der Canon Rebel T3 und T3i ermöglicht es Ihnen nicht, näher am Motiv zu fokussieren als bei einigen Nicht-Spiegelreflexkameras. Die Nahfokussierungsfähigkeiten Ihrer Kamera hängen ganz von der Linse ab, die Sie verwenden. (In der Bedienungsanleitung Ihres Objektivs sollte die minimale Fokussierentfernung angegeben werden.) Auswahl des Nahaufnahmemodus ...

Fotografieren im Querformat mit einer Canon EOS Rebel T3-Kamera - Dummies

Fotografieren im Querformat mit einer Canon EOS Rebel T3-Kamera - Dummies

Der Landschaftsmodus der Canon Rebel T3 und T3i, der für die Aufnahme von Aussichtspunkten, Stadtskylinen und anderen großformatigen Motiven konzipiert wurde, erzeugt eine große Schärfentiefe. Infolgedessen erscheinen Objekte, die sich sowohl in der Nähe der Kamera als auch in einiger Entfernung befinden, scharf fokussiert. Wie im Hochformat-Modus erreicht der Querformat-Modus die größere Schärfentiefe durch Manipulieren von ...

Die Wahl des Herausgebers

Erstellen und Verwenden von Verknüpfungen im dynamischen GP-Navigationsbereich - Dummies

Erstellen und Verwenden von Verknüpfungen im dynamischen GP-Navigationsbereich - Dummies

Microsoft Dynamics GP-Verknüpfungen werden angezeigt. Der obere Teil des Navigationsfensters, wenn Sie Ihre Dynamics GP Homepage anzeigen. Verwenden Sie Verknüpfungen, um häufig verwendete Fenster und Ressourcen in Dynamics GP schnell zu öffnen. Zum Beispiel können Sie einen Satz von Verknüpfungen zu den Fenstern erstellen, die Sie regelmäßig verwenden, und einen anderen Satz für die ...

MYOB Software für Dummies-Spickzettel (Neuseeland-Ausgabe) - Dummies

MYOB Software für Dummies-Spickzettel (Neuseeland-Ausgabe) - Dummies

Sie können MYOB verwenden für Ihre Geschäftsanforderungen schnell und einfach durch diese einfachen Verknüpfungen. Wenn Sie zusätzliche Hilfe benötigen, bieten viele Websites MYOB-Unterstützung an.

MYOB Software für Dummies Cheat Sheet (Australische Ausgabe) - Dummies

MYOB Software für Dummies Cheat Sheet (Australische Ausgabe) - Dummies

Mit MYOB für Ihre Unternehmensanforderungen kann durch diese einfachen Abkürzungen noch schneller und einfacher gemacht werden. Und wenn Sie Hilfe benötigen, gibt es viele Websites, die Unterstützung anbieten.