【发布时间】:2015-02-19 11:32:58
【问题描述】:
我知道 Java8 中的 Streams 只能收集一次(如在 forEach() 终止中),但我想知道我们是否可以设法“挖掘”到位于过滤和映射任务链中间的流产生一些附带效应。
本质上,“点击”就像执行 forEach() 但在管道的那个点返回 Stream。
我会这样使用它:
List<User> createAndPersistRandomUsers(int count) {
return IntStream.range(0, count)
.boxed() // returns Stream<Integer>
.map(UserBuilder::random) // returns Stream<User>
.tap(userRepo::persist) // Collateral persist of user, returns Stream<User>
.collect(toList()); // returns List<User>
}
有什么想法吗?
【问题讨论】:
标签: java functional-programming java-8 java-stream