6.1 Mittels anonymer Klassen Code an Methoden übergeben6.2 Funktionale Interfaces6.3 Syntax und Deklaration von Lambda-AusdrückenAufgabe 6.1: Lambda-Ausdruck ohne Parameter versus anonymer KlasseAufgabe 6.2: Lambda-Ausdruck mit Parameter versus anonymer Klasse6.4 Scoping und Variable CaptureAufgabe 6.3: Die Umgebung von Lambda-Ausdrücken6.5 Methoden- und Konstruktor-ReferenzenAufgabe 6.4: Methoden-Referenzen in ZuweisungenAufgabe 6.5: Konstruktor-Referenzen und die neuen funktionalen Interfaces Supplier<T> und Function<T,R>6.6 Default- und statische Methoden in Interfaces6.7 Das neue Interface Stream6.8 Die forEach-Methoden von Iterator, Iterable und StreamAufgabe 6.6: Die funktionalen Interfaces BiConsumer<T,U>, BiPredicate<T,U> und BiFunction<T,U,R>Aufgabe 6.7: Die Methoden des Interface Stream und die Behandlung von Exceptions in Lambda-Ausdrücken6.9 Das Interface Collector und die Klasse Collectors: Reduktion mittels Methoden von Streams und Kollektoren.Aufgabe 6.8: Weitere Methoden des Interface Stream: limit(), count(), max(), min(), skip(), reduce() und collect()Aufgabe 6.9: Das Interface Collector und die Klasse Collectors6.10 Parallele StreamsAufgabe 6.10: Parallele Streams6.11 Die map()- und flatMap()-Methoden von Stream und OptionalAufgabe 6.11: map() versus flatMap()6.12 Spracherweiterungen mit Java 10, Java 11, Java 12 und Java 13Aufgabe 6.12: Typinferenz für lokale Variablen in Java 10 und Java 11Aufgabe 6.13: Switch-Statements und Switch-Expressions6.13 LösungenLösung 6.1Lösung 6.2Lösung 6.3Lösung 6.4Lösung 6.5Lösung 6.6Lösung 6.7Lösung 6.8Lösung 6.9Lösung 6.10Lösung 6.11Lösung 6.12Lösung 6.13