gpt4 book ai didi

Java 8 流 IllegalStateException : Stream has already been operated on or closed

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:31:45 25 4
gpt4 key购买 nike

我正在尝试使用 Stream API 生成 Order 实例。我有一个创建订单的工厂函数,一个 DoubleStream 用于初始化订单金额。

private DoubleStream doubleStream = new Random().doubles(50.0, 200.0);

private Order createOrder() {
return new Order(doubleStream.findFirst().getAsDouble());
}

@Test
public void test() {

Stream<Order> orderStream = Stream.generate(() -> {
return createOrder();
});

orderStream.limit(10).forEach(System.out::println);

如果我使用文字 (1.0) 初始化 Order 实例,则可以正常工作。当我使用 doubleStream 创建一个随机数时,抛出异常。

最佳答案

答案在 Stream 的 javadoc 中(强调我的):

A stream should be operated on (invoking an intermediate or terminal stream operation) only once. This rules out, for example, "forked" streams, where the same source feeds two or more pipelines, or multiple traversals of the same stream. A stream implementation may throw IllegalStateException if it detects that the stream is being reused.

在您的代码中,您确实使用了两次流(一次在 createOrder() 中,另一次在 .limit().forEach() 中使用

关于Java 8 流 IllegalStateException : Stream has already been operated on or closed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27990451/

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