StreamAPI多次消费一个stream代码实例
2020-04-29 12:14
786 查看
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); }
以上就是本文的全部内容,希望对大家的学习有所帮助
您可能感兴趣的文章:
相关文章推荐
- 一个Win32 API实例类(代码收集)
- 多个 TermQuery或一个MultiFieldQueryParser构建BooleanQuery多个域的检索学习实例代码
- Kafka java api-消费者代码与消费分析、生产者消费者配置文件详解
- 采用CakePHP框架为Android应用快速搭建Web Service服务器及API接口的PHP代码实例
- Spring boot通过AOP防止API重复请求代码实例
- C#代码实现,确保windows程序只有一个实例(instance)
- 判断输入的一个数是否为回文数c++代码实例及运行结果
- ArcGIS API for Silverlight开发入门(2):一个基础地图实例
- 多个TermQuery或一个MultiFieldQueryParser构建BooleanQuery多个域的检索学习实例代码
- 一个典型的PHP分页实例代码
- 一个PHP缓存类,附三个实例Demo代码
- 通过一个实例介绍 ArrayList 中常用API的用法
- 代码不规范的一个实例——判断语句中不要赋值!
- javascript原生封装一个淡入淡出效果的函数测试实例代码
- 一个JavaScript去除字符串末尾的空白实例代码
- linux内核分析第四周-使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
- 使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
- HOOK API (一)——HOOK基础+一个鼠标钩子实例
- 一个PHP并发访问实例代码
- java 使用线程做的一个简单的ATM存取款实例代码