gpt4 book ai didi

JAVA流: re-use double a DoubleStream

转载 作者:行者123 更新时间:2023-12-01 07:44:15 33 4
gpt4 key购买 nike

我需要一个技巧来解决这个问题,我正在使用 Java 1.8,并且我从返回 DoubleStream 对象的方法中检索了一个对象。所以,问题是我无法在消耗流后重用该流。

这是代码的第一个版本:

 DoubleStream stream = object.getvalueStream(a,b);
if(condtion)
stream.map(v -> v * 2);
stream.forEach(value -> {
// do something
}

问题是,一旦条件为真,流就会被消耗,并且我无法重用它。因此,我尝试使用供应商从供应商返回 doubleStream 并对其进行公开迭代。

但是当我尝试从已使用的流对象恢复流时仍然存在同样的问题。

这是我更新的代码:

      DoubleStream stream = object.getvalueStream(a,b);
if(condtion)
stream.map(v -> v * 2);
Supplier>DoubleStream> streamSupplier = () -> DoubleStream.of(stream.toArray());
streamSupplier.get().forEach(value -> {
//Do something

但我仍然遇到同样的问题,因为如果条件为真,我会从已使用的流中创建供应商。

感谢您的帮助。

最佳答案

once the condition is true, the stream is consumed And I can not reuse it

中间操作(例如 map )返回一个新流,因此您需要在中间操作( map )之后重新分配该流。

DoubleStream stream = object.getvalueStream(a,b);
if (condition) {
stream = stream.map(v -> v * 2);
}
stream.forEach(value -> {
// do something
}

注意终端操作(例如 foreach )不会返回流。因此,如果您需要许多终端操作,您应该收集流以便可以重用。

另请注意,还有一个中间版本 foreachpeek如果您想链接foreach ( peek ) 来电。

关于JAVA流: re-use double a DoubleStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57316898/

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