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

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

分类:Java · 发布时间:2021-09-19 12:43 · 阅读:10561

这篇文章主要介绍了StreamAPI多次消费一个stream代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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 supplier= () -> IntStream.range(0, 12); OptionalInt min = supplier.get().min(); //第一次消费正常 System.out.println(min); long count = supplier.get().count(); //第二次消费正常 System.out.println(count); }

标签:
API 消费 stream

相关文章

Java lombok中@Accessors注解三个属性的作用

这篇文章主要介绍了Java lombok的@Accessors注解属性解析,该注解主要作用是:当属性字段在生成 getter 和 setter 方法时,做一些相关的设置,需要的朋友可以参考下

java项目实现统一打印入参出参等日志

这篇文章主要介绍了java项目实现统一打印入参出参等日志方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

基于jdk动态代理和cglib动态代理实现及区别说明

这篇文章主要介绍了基于jdk动态代理和cglib动态代理实现及区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

java如何获得redis所有的key-value

这篇文章主要介绍了java如何获得redis所有的key-value,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

mybatis中的动态sql问题

这篇文章主要介绍了mybatis中的动态sql问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回分类 返回首页