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

 更新时间:2020年04月01日 09:23:45   作者:JaxYoun  
这篇文章主要介绍了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<IntStream> supplier= () -> IntStream.range(0, 12);

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 简单实现Java版学生管理系统

    简单实现Java版学生管理系统

    这篇文章主要为大家详细介绍了简单实现Java版学生管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • springmvc实现文件上传功能

    springmvc实现文件上传功能

    这篇文章主要为大家详细介绍了springmvc实现文件上传功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • java递归算法实例分析

    java递归算法实例分析

    这篇文章主要介绍了java递归算法实例分析,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • java 中序列化与readResolve()方法的实例详解

    java 中序列化与readResolve()方法的实例详解

    这篇文章主要介绍了java 中序列化与readResolve()方法的实例详解的相关资料,这里提供实例帮助大家理解这部分知识,需要的朋友可以参考下
    2017-08-08
  • java文字转语音的实现示例

    java文字转语音的实现示例

    在Java中,我们可以使用第三方库来实现文字转语音的功能,本文主要介绍了java文字转语音的实现示例,选择jacob技术实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • Java中Json与List、Map、entity的互相转化

    Java中Json与List、Map、entity的互相转化

    在开发中,Json转换的场景往往也就是那么几个,本文主要介绍了Java中Json与List、Map、entity的互相转化,具有一定的参考价值,感兴趣的可以了解一下
    2022-07-07
  • Java之Pattern.compile函数用法详解

    Java之Pattern.compile函数用法详解

    这篇文章主要介绍了Java之Pattern.compile函数用法详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • Java内存模型原子性原理及实例解析

    Java内存模型原子性原理及实例解析

    这篇文章主要介绍了Java内存模型原子性原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • Java如何处理延迟任务过程解析

    Java如何处理延迟任务过程解析

    这篇文章主要介绍了Java如何处理延迟任务过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • JavaWeb乱码问题的终极解决方案(推荐)

    JavaWeb乱码问题的终极解决方案(推荐)

    这篇文章主要给大家介绍了关于JavaWeb乱码问题的终极解决方案,文中通过示例代码介绍的非常详细,对大家学习或者使用JavaWeb具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04

最新评论