gpt4 book ai didi

java - 如何在 Java8 流中管理附带效果

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:44:23 27 4
gpt4 key购买 nike

我知道 Java8 中的流只能收集一次(如 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>
}

有什么想法吗?

最佳答案

我能想到的最接近你想要的东西是 peek :

Stream peek(Consumer action)

Returns a stream consisting of the elements of this stream, additionally performing the provided action on each element as elements are consumed from the resulting stream.

This is an intermediate operation.

它允许您在使用 Stream 时对 Stream 的元素执行操作。

List<User> createAndPersistRandomUsers(int count) {
return IntStream.range(0, count)
.boxed() // returns Stream<Integer>
.map(UserBuilder::random) // returns Stream<User>
.peek(userRepo::persist) // Collateral persist of user, returns Stream<User>
.collect(toList()); // returns List<User>
}

关于java - 如何在 Java8 流中管理附带效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28605283/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com