Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Java Grundkurs 3: Generische Programmierung, Datenströme, Datumsrechnung

forEach und removeIf

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
In diesem Video stellt Ihnen der Trainer die beiden Methoden forEach() und removeIf() aus der Collection API vor. Das Besondere bei diesen Methoden ist, dass sie ein Functional Interface als Übergabeparameter erwarten, und ihnen somit ein Lambda-Ausdruck oder eine Method Reference übergeben werden können.

Transkript

In diesem Video stelle ich Ihnen zwei Methoden der Collection API vor, die bereits zeigen, wie mächtig der Grundgedanke der funktionalen Programmierung mit Lambda-Ausdrücken ist. Denn Java 8 hat neue Methoden in die Collection-API eingeführt, die ein Functional Interface als übergabe-Parameter erwarten und denen wir deshalb einen Lambda-Ausdruck oder eine Method Reference übergeben können. Von diesen Methoden werde ich Ihnen die Methoden For Each und Remove vorstellen. Das besondere hierbei ist, dass das was wir mit dem Lambda-Ausdruck bzw. der Method Reference bezwecken in einer internen Iteration mit jedem einzelnen Element der Datenreihe durchgeführt wird. Ich beginne also damit, indem ich Ihnen zeige, wie Sie mit der For Each Methode durch die Datenreihe iterieren und zwar handelt es sich hierbei um eine interne Iteration. Wir werden also nicht selbst mit einer For Schleife durch die Datenreihe iterieren, sondern dies der Methode For Each überlassen. Ich gehe also nun hier hinunter wo wir die For Schleife benutzen, um die Katzen auszugeben und dort werde ich jetzt ganz einfach hingehen und diese drei Zeilen entfernen und stattdessen Katzen hinschreiben. Und Katzen ist ja ein Objekt von Collection und somit von Iterable und somit ist die Methode For Each enthalten, also kann ich dort die Methode forEach aufrufen. So, und jetzt erwartet die forEach Methode ein Objekt des Typs Consumer, das sehen Sie hier. Und dann wird intern eben durch diese For Schleife iteriert. Also kann ich der forEach Methode auch eine Method-Reference übergeben und das mache ich jetzt auch. Ich übergebe ihr einfach System.out ; ; Println. Und die Zeile kopiere ich einmal und ersetze auch da oben diese drei Zeilen mit der Enhanced For Schleife durch den gleichen Ausdruck. Dann speichere ich das Programm ab und teste es einmal und dann sehen Sie, dass das Ergebnis mir auch wieder hier die gleichen Zeilen anzeigt, wie mit der Enhanced For Schleife. Super, das hat also funktioniert. Die Methode forEach wurde als Default Methode im Interface Iterable programmiert. Das hatte ich Ihnen ja gezeigt. Weil das Interface Collection vom Interface Iterable abgeleitet ist, steht die Methode forEach in der gesamten Collection API zur Verfügung. Und das ist auch gut so, denn die Methode forEach ermöglicht, dass wir für das Durchiterieren durch eine Collection in vielen Fällen überhaupt nicht mehr mit der For Schleife zu arbeiten brauchen. Kommen wir nun zu der nächsten Methode, die ich Ihnen vorstellen möchte. Das ist die Methode Remove If. Die Methode Removeif ist im Interface Collection als Default Methode implementiert worden. Auch diese Methode steht somit in der Collection API zur Verfügung. Die Methode nimmt ein Objekt des Typs Predicate entgegen. Und wenn das Ergebnis des Tests ein True liefert, dann wir das Objekt aus der Datenreihe entnommen. In unserem Beispielprogramm werde ich die Methode Removeif einsetzen, um die größte Katze aus der Datenreihe rauszunehmen. Die Implementierung werde ich jetzt ganz unten in unserem Programm durchführen. Und zunächst schreibe ich einen Kommentar hin, damit wir später noch lesen können, was wir vorhatten. Entferne die größte Katze und gebe die Katzen erneut aus. Aber allerdings nur also falls eine Katze tatsächlich entfernt wurde. Die Implementierung ist einfach. Wir brauchen zunächst die Variable Katzen. Dort befindet sich eine Methode, die sich RemoveIf nennt. Die liegt vor, weil RemoveIf in dem Iterable drin ist und somit auch in der gesamten Collection API. Ich kann also jetzt sagen, removeIf und hier sehen Sie schon, dass removeIf ein Functional Interface erwartet, des Typs Predicate. Ich kann also in die runden Klammern jetzt also einen Lambda-Ausdruck oder eine Method-Reference einfügen. Ich wähle mal einen Lambda-Ausdruck. Ich schreibe also k, das ist dann jedes einzelne Element, also jede einzelne Katze und die soll entfernt werden, wenn sie der größten Katze entspricht. Also, Klammer auf Klammer zu und dort drin k.equals Klammer auf Klammer zu und dann groessteKatze. So, Semikolon, das wird die groessteKatze entfernen. Jetzt ist es so, dass die Methode removeIf einen booleschen Wert zurück liefert. Und zwar ein True, wenn ein Objekt entfernt werden konnte. Jetzt kann ich das Ganze in eine if Anweisung reinsetzen. If Katzen.removeIf, dann zeigt mir alle Katzen an, die noch übrig sind. Also, Katzen.forEach und darin dann wieder unseren Consumer System.out : : println. Und das probieren wir jetzt auch nochmal aus. So und jetzt sehen Sie, dass wir hier ganz unten nur noch vier Zeilen, also vier Katzen haben und die Größte sollte entfernt worden sein. Das ist Fifone mit seiner Größe von 66 cm und der ist jetzt hier in der Auflistung ganz unten nicht mehr zu sehen. In diesem Video habe ich Ihnen die Methoden removeIf und forEach vorgestellt. Das besondere an diesen Methoden ist, dass sie ein Functional Interface als Übergabe-Parameter entgegennehmen.

Java Grundkurs 3: Generische Programmierung, Datenströme, Datumsrechnung

Steigen Sie tiefer in die Java-Programierung ein und lernen Sie den Umgang mit generischen Typen, Lamda-Ausdrücken, DAtenströmen und mit Datums- und Zeitberechnung.

5 Std. 24 min (47 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:09.10.2016

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!