StreamAPI多次消费一个stream代码实例
作者:JaxYoun 发布时间:2023-10-15 19:44:09
标签:API,消费,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);
}
来源:https://www.cnblogs.com/JaxYoun/p/12549661.html


猜你喜欢
- 在 String 中提供了两个截取字符串的方法,一个是从指定位置截取到字符串结尾,另一个是截取指定范围的内容。下面对这两种方法分别进行介绍。
- 为此Android在appcompat-v7库中提供了一个NotificationCompat类来处理新老版本的兼容问题,我们在编写通知功能
- Collection继承、实现关系如下(说明(I)表示接口, (C)表示Java类,<--表示继承,<<——表示实现):(
- 一个图片识别小工具,原先主要是识别以前公司的软件注册码截图里的数字和字母(每次要一个一个框复制出来粘贴到注册器里,很麻烦!),因为注册码出现
- Java 内存划分: 在Java内存分配中,java将内存分为:方法区,堆,虚拟机栈,本地方法栈,程序计
- 本文实例为大家分享了C语言实现银行系统的具体代码,供大家参考,具体内容如下1.实现要求生成一个1000-1000000之间的随机数来代表账户
- 本文实例为大家分享了Unity3D仿写Button面板事件绑定功能的具体代码,供大家参考,具体内容如下最近在做一个情节引导得项目。其中一个需
- 环境:springcloud Hoxton.SR11本节主要了解系统中的谓词与配置的路由信息是如何进行初始化关联生成路由对象的。每个谓词工厂
- 本文实例讲述了C#更改tabControl选项卡颜色的方法。分享给大家供大家参考,具体如下:private void Form1_Load(
- 本文实例讲述了winform实现创建最前端窗体的方法。分享给大家供大家参考。具体实现方法如下:一、需求:1).需要这个窗体始终处于前端而且可
- java 中String.equals和==的比较 初学java有段时间了,但是昨晚忽然就被"asd&quo
- 前言安卓6.0之后,一些敏感权限需要进行动态请求,虽说编写请求授权代码并不难,但是每次一需要权限就需要在视图中添加一段代码,严重影响代码美观
- 这周末体验了一下挺火的Docker技术,记录学习笔记。>Docker是干什么的Docker 是一个基于Linux容器(LXC-linu
- 本节作为主要讲解Spring Data的环境搭建JPA Spring Data :致力于减少数据访问层(DAO)的开发量。开发者唯一要做的就
- 本文实例讲述了C#采用OpenXml实现给word文档添加文字的方法,分享给大家供大家参考。具体方法如下:一般来说,使用OpenXml给wo
- java 解决异常 2 字节的 UTF-8 序列的字节 2 无效的问题  
- idea无法切换分支报错idea拉取项目后,master分支配置完项目基础配置后,生成.iml等文件不受git管理后无法检出其他分支报错如下
- Java中,for-each循环简化了任何Collection或array的遍历过程,但并不是每个Java程序员都了解本文将要描述的for-
- springboot项目main函数启动在controller包下新建appController类package controller;im
- 简介我们知道Java中Collection接口下的很多集合都是线程不安全的, 比如 java.util.ArrayList不是线程安全的,