Ole*_*Ole 8 java data-generation java-8 java-stream
我正在尝试使用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);
Run Code Online (Sandbox Code Playgroud)
如果我使用文字(1.0)初始化Order实例,这可以正常工作.当我使用doubleStream创建随机数量时,抛出异常.
知道如何解决这个问题吗?
TIA,
奥勒
fge*_*fge 14
答案是Stream(强调我的)javadoc :
应该仅对一个流进行操作(调用中间或终端流操作).例如,这排除了"分叉"流,其中相同的源提供两个或更多个管道,或者同一个流的多个遍历.如果流实现检测到正在重用流,则它可能会抛出IllegalStateException.
在您的代码中,您确实使用了两次流(一次进入createOrder(),另一次使用时).limit().forEach()
| 归档时间: |
|
| 查看次数: |
10560 次 |
| 最近记录: |