5
在Java8中我有一個流,我想申請一個映射器流。在Java8中應用一個映射器流到另一個流中
例如:
Stream<String> strings = Stream.of("hello", "world");
Stream<Function<String, String>> mappers = Stream.of(t -> t+"?", t -> t+"!", t -> t+"?");
我想寫:
strings.map(mappers); // not working
但我現在最好的解決我的任務的方法是:
for (Function<String, String> mapper : mappers.collect(Collectors.toList()))
strings = strings.map(mapper);
strings.forEach(System.out::println);
我怎樣才能解決這個問題
- 而不收集映射器到列表
- 不使用
for
循環 - 沒有打破我的流暢代碼
其他變化:'mappers.reduce(Function.identity()函數::和Then)','mappers.reduce(Function.identity(),Function :: compose)'。 – rgettman
@rgettman:'orElse'變體是一個小的優化,因爲它不會將一個身份函數與另一個函數結合起來。 – Holger
如果'Function.identity()'覆蓋了'compose'和'andThen',那將會很不錯...或者JIT編譯器無論如何都會擺脫這種複雜性? –