Sagen, ich habe diesen Stream:Java 8 Streams: Collapse/abstract Bäche Teile
list.stream()
.map(fnPart1)
.map(fnPart2)
.collect(Collectors.toList())
Ohne manuell Abwickeln der FNX Teile und setzen sie zusammen:
list.stream()
.map(fn1) // part1
.map(fn2) //
.filter(fn3) //
.flatMap(fn4) // part 2
.map(fn5) //
.filter(fn6) //
.map(fn7) //
.collect(Collectors.toList())
Wie kann ich es so aussehen zu lassen (Aus Wartungsgründen möchte ich sie unberührt lassen und die FnPartX mit ihnen ausdrücken).
Karte, im Gegensatz zu FlatMap und Filter, kann die Anzahl der Elemente im Stream nicht ändern. –
@BenoitParis Ich habe die Frage vielleicht missverstanden, aber Sie könnten part1 einem 'Stream' und part2 einem 'Stream
Sie können nicht. Zumindest können Sie es nicht so machen, wie Sie wollen (mit zwei Funktionen, mit 'map' im ursprünglichen Stream). Das liegt daran, dass 'map()' auf den stream * elements * funktioniert (es transformiert jedes Element des Streams, nicht den Stream selbst), so dass Sie zB keine Elemente filtern können, was eine Operation über den Stream selbst ist einige Elemente basieren auf einer Bedingung). –