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

前端 未结 6 669
孤独总比滥情好
孤独总比滥情好 2020-11-27 07:45

I\'m trying to generate Order instances using the Stream API. I have a factory function that creates the order, and a DoubleStream is used to initialize the amount of the o

6条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-11-27 08:34

    As said in other answers, Streams are single-use items and you have to create a new Stream each time you need one.

    But, after all, this isn’t complicated when you remove all your attempts to store intermediate results. Your entire code can be expressed as:

    Random r=new Random(); // the only stateful thing to remember
    
    // defining and executing the chain of operations:
    r.doubles(50.0, 200.0).mapToObj(Order::new).limit(10).forEach(System.out::println);
    

    or even simpler

    r.doubles(10, 50.0, 200.0).mapToObj(Order::new).forEach(System.out::println);
    

提交回复
热议问题