StreamAPI多次消费一个stream代码实例

作者:JaxYoun 时间:2023-10-15 19:44:09 

StreamAPI中的stream不能被重复消费,一旦它被使用,stream就被关闭了,别的地方再消费它就会抛IllegalStateException:stream has already been operated upon or closed。

比如下面的代码中,stream被消费了两次,第二次消费时将会抛异常:


@Test
public void statistics() {
 IntStream range = IntStream.range(0, 12);

OptionalInt min = range.min(); //第一次消费正常
 System.out.println(min);

long count = range.count(); //第二次消费将报错
 System.out.println(count);
}

如何实在需要多次消费呢,通过Supplier来生产stream,每次调用supplier.get()获取一个崭新的stream对象,虽然对象是新的,但是每个stream中的数据是相同的,间接地实现了重复消费的语义:


@Test
public void statistics0() {
 Supplier<IntStream> supplier= () -> IntStream.range(0, 12);

OptionalInt min = supplier.get().min(); //第一次消费正常
 System.out.println(min);

long count = supplier.get().count(); //第二次消费正常
 System.out.println(count);
}

来源:https://www.cnblogs.com/JaxYoun/p/12549661.html

标签:API,消费,stream
0
投稿

猜你喜欢

  • Android实现志愿者系统详细步骤与代码

    2022-01-08 22:41:42
  • IDEA解决maven包冲突easypoi NoClassDefFoundError的问题

    2023-10-16 14:51:38
  • 使用IDEA将Java/Kotliin工程导出Jar包的正确姿势

    2022-10-18 17:39:34
  • C#实现终止正在执行的线程

    2022-05-06 22:34:22
  • 解决Android studio 2.3升级到Android studio 3.0 后apt报错问题

    2023-05-17 13:56:50
  • 浅谈java+内存分配及变量存储位置的区别

    2022-07-09 00:46:47
  • Android自定义渐变式炫酷ListView下拉刷新动画

    2021-12-26 17:31:09
  • Android画板开发之撤销反撤销功能

    2023-11-28 10:08:37
  • 解析后台进程对Android性能影响的详解

    2021-09-05 05:42:09
  • 浅析C#中数组,ArrayList与List对象的区别

    2022-03-12 00:41:30
  • 如何在Android App中集成支付宝和微信支付功能

    2023-04-01 00:06:00
  • 一文详解Java中流程控制语句

    2023-11-26 11:39:49
  • 使用C++ Matlab中的lp2lp函数教程详解

    2023-07-13 17:13:12
  • java数据结构-堆实现优先队列

    2023-11-25 08:30:20
  • Java多线程编程综合案例详解

    2023-12-09 18:13:25
  • Struts2实现多文件上传功能

    2021-11-01 13:50:25
  • 浅谈SpringCloud实现简单的微服务架构

    2023-05-22 12:59:34
  • 解析Spring Mvc Long类型精度丢失问题

    2021-11-06 12:27:37
  • SpringBoot操作mongo实现方法解析

    2023-03-19 00:50:56
  • java 获取当前路径下的所有xml文档的方法

    2021-08-08 13:54:29
  • asp之家 软件编程 m.aspxhome.com