Schrödinger programmiert Java - Das etwas andere Fachbuch
Schrödinger programmiert Java - Das etwas andere Fachbuch
Schrödinger programmiert Java - Das etwas andere Fachbuch
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Und das wä zum Beispiл?<br />
Na ja, verschiedenste funktionale Operationen halt. Du könntest zum<br />
Beispiel die Schuhkartons rausfiltern, die irgendwie beschädigt sind. <strong>Das</strong><br />
würdest du mit filter() machen. Oder du könntest für jeden Schuhkarton<br />
ein paar Schuhe bereitstellen. Dazu würdest du map() verwenden. Oder<br />
du könntest nach dem Schuhkarton suchen, der am größten ist. <strong>Das</strong> würdest du<br />
über reduce() machen. <strong>Das</strong> Ergebnis dieser Operationen würde dann<br />
jeweils auf einem neuen Fließband landen.<br />
Und LKW würд ttzдm mit н wie wegfaн …<br />
… genau, äh … aber … äh … die Referenzen auf die Schuhkartons wären<br />
weiterhin auf den Fließbändern … aber hey, ich denke, du verstehst<br />
das Prinzip, oder? Dir zuliebe lass ich es jetzt auch mal gut sein mit den Schuhkartonbeispielen.<br />
Hier für den Programmieralltag <strong>etwas</strong> realistischere<br />
Beispiele für die Anwendung der drei Funktionen:<br />
List namen = new ArrayList();<br />
namen.add("<strong>Schrödinger</strong>");<br />
namen.add("Bissingen");<br />
namen.add("Bossingen");<br />
namen.add("Bussingen");<br />
namen.add("Schickelmickel");<br />
Stream namenStream = namen.stream();*1<br />
Mit „S“ beginnende<br />
Namen herausfiltern<br />
mit filter():<br />
Stream namenMitS = namenStream.filter(name -> name.startsWith("S"));*2<br />
namenMitS.forEach(name -> System.out.println(name));*3<br />
*1 Jede Collection hat jetzt eine Methode<br />
stream(), über die holst du dir eine Instanz<br />
von Stream.<br />
[Zettel]<br />
*2 Stream hat verschiedene Methoden,<br />
unter <strong>andere</strong>m eben die Methode filter(), mit der<br />
du genau die Elemente herausfilterst, für die der Lambda-<br />
Ausdruck ein true liefert. Zurück bekommst du<br />
ein Stream-Objekt.<br />
Probier mal, das alles mit <strong>Java</strong> 7<br />
zu programmieren. Da wirst du<br />
schon ein paar Codezeilen mehr<br />
benötigen.<br />
*3 Du könntest den<br />
Stream auch mit<br />
toArray() in ein<br />
Array umwandeln und<br />
darüber iterieren.<br />
Besser aber du nimmst<br />
forEach(). Diese<br />
Methode wendet den<br />
übergebenen<br />
Lambda-Ausdruck auf<br />
jedes Element im<br />
Stream an.<br />
350 Kapitel ACHT