原因

Stream只能被消费一次,当其调用了终止操作后便说明其已被消费掉了。 如果还想重新使用,可考虑在原始数据中重新获得。

错误代码

public void test1(){List<Person> list = new ArrayList();list.add(new Person("妖姬", "女",19));list.add(new Person("张三", "男",19));list.add(new Person("李四", "男",20));list.add(new Person("王五", "男",20));list.add(new Person("赵六", "男",21));list.add(new Person("卡莎", "女",21));Stream<Person> stream = list.stream();List<Person> tempList1 = stream.filter(person -> person.getAge() > 20).collect(Collectors.toList());System.out.println(tempList1);List<Person> tempList2 = stream.filter(person -> "女".equals(person.getGender())).collect(Collectors.toList());System.out.println(tempList2);
}

从日志中可以看出 tempList1是有被打印出来的,错误发生在获取tempList2的过程中。 而tempList2获取失败的原因就是在获取tempList1的时候调用了collect的方法,该方法为终止操作,执行完后就代表stream已经被消费了。

修改

public void test1(){List<Person> list = new ArrayList();list.add(new Person("妖姬", "女",19));list.add(new Person("张三", "男",19));list.add(new Person("李四", "男",20));list.add(new Person("王五", "男",20));list.add(new Person("赵六", "男",21));list.add(new Person("卡莎", "女",21));List<Person> tempList1 = list.stream().filter(person -> person.getAge() > 20).collect(Collectors.toList());System.out.println(tempList1);List<Person> tempList2 = list.stream().filter(person ->"女".equals(person.getGender())).collect(Collectors.toList());System.out.println(tempList2);
}

改造后的代码,重新从原始数据中获取流就不会出现异常。

JAVA - Stream - stream has already been operated upon or closed相关推荐

  1. java.lang.IllegalStateException: stream has already been operated upon or closed

    1. 错误描述 static int [] intArr = new int[]{30,96,23,69,85,62,12,99,11}; IntStream intStream =Arrays.st ...

  2. “Stream has already been operated upon or closed” Exception in Java

    1. Overview In this brief article, we're going to discuss a common Exception that we may encounter w ...

  3. Java 8 Stream Tutorial--转

    原文地址:http://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/ This example-driven tutori ...

  4. JAVA8新特性的StreamAPI 遇到的问题stream has already been operated upon or closed

    java 8 的新特性之一的 stream 流 使用到一个intstream 做一个运算, 但是 我想第二次使用的时候遇到问题了 stream has already been operated up ...

  5. Stream报错:stream has already been operated upon or closed

    Stream 有一个特点:只能使用一次 public class StreamUtils {public static void main(String[] args){StreamUtils.use ...

  6. 吃透JAVA的Stream流操作,多年实践总结

    在JAVA中,涉及到对数组.Collection等集合类中的元素进行操作的时候,通常会通过循环的方式进行逐个处理,或者使用Stream的方式进行处理. 例如,现在有这么一个需求: 从给定句子中返回单词 ...

  7. Java 8 stream学习

    简介 Java 8里引入的另外一个重要特性就是stream api.笼统的来说,它这种特性的引入可以方便我们以一种更加声明式的方式来写代码,更加便利了一些函数式编程方法的使用.同时,它也使得我们可以充 ...

  8. Java 8 Stream 总结

    Stream 简介 Stream 是什么 Classes to support functional-style operations on streams of elements, such as ...

  9. java.util.stream.Stream案例解读

    测试环境 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-b ...

  10. java中Stream流

    一 概述 数据渠道.管道,用于操作数据源(集合.数组等)所生成的元素序列. 集合讲的是数据,流讲的是计算 即一组用来处理数组,集合的API. 二 Stream特点 1 Stream 不是数据结构,没有 ...

最新文章

  1. HTML5背后的故事
  2. CMakeLists.txt的运行方法
  3. 基于tiny4412的Linux内核移植 -- eMMC驱动移植(六)
  4. 商品和服务税收分类编码表_如何设置客户编码和商品编码?(附操作图)
  5. git 源代码自动检查_检查提交(git log,git show)《 Nest.js 应用案例:源代码管理 》...
  6. 牛客 - 斐波那契和(杜教BM)
  7. yii2 beta版 执行流程
  8. [Asp.Net] Form验证中 user.identity为false
  9. js 语音识别_js语音识别_js 语音识别库 - 云+社区 - 腾讯云
  10. 解析复杂结构的json文件的时候,快速生成结构体--golang
  11. 笔试算法题(17):奇偶数分置数组前后段 反序访问链表
  12. 怎么检测硬盘是否有坏道
  13. AutoLeaders控制组——51单片机学习笔记(AD/DA、红外遥控)
  14. 思科模拟器 --- 三层交换机的基本配置
  15. hexo图片展示-blog图床迁移至七牛云
  16. 基音检测算法的性能:Performance Evaluation of Pitch Detection Algorithms
  17. 郭天祥六年非一般的大学--哈尔滨工程大学学生
  18. 【读书笔记】Java并发编程的艺术
  19. bms中soh计算方式_储能电站bms的电池soh估算方法
  20. Thinkphp5-开启调试模式

热门文章

  1. Tailwind CSS如何单页面使用并压缩tailwindcss
  2. 解放生产力 - Xcode 与 Simulator 技巧整理(持续更新中)
  3. openjudge 1.5.21 角谷猜想
  4. SVD分解和矩阵的Lipschitz条件等
  5. python安装pyecharts库_python安装阿里云库pyecharts 安装不上,求大佬指点一下-问答-阿里云开发者社区-阿里云...
  6. 如何导入android sdk,如何导入android sdk samples
  7. JFrame和Swing控件
  8. 3d可视化设备产品场景展示更加直观形象
  9. openfoam前处理:并行计算decomposeParDict和setFieldsDict
  10. Android性能测试文章汇总