15.09.2014 Aufrufe

Schrödinger programmiert Java - Das etwas andere Fachbuch

Schrödinger programmiert Java - Das etwas andere Fachbuch

Schrödinger programmiert Java - Das etwas andere Fachbuch

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!