Java 8 Stream 流已被操作或关闭
来源:互联网 发布:java 日期格式化 编辑:程序博客网 时间:2024/05/22 15:21
在Java 8中,Stream不能重复使用,一旦被消耗或使用,流将被关闭,类似流水线,水龙头的水一样一去不复返
示例 - 流关闭
查看以下示例,它会抛出一个IllegalStateException
,表示“流被关闭”。
TestJava8.java
package com.mkyong.java8;import java.util.Arrays;import java.util.stream.Stream;public class TestJava8 { public static void main(String[] args) { String[] array = {"a", "b", "c", "d", "e"}; Stream<String> stream = Arrays.stream(array); // loop a stream stream.forEach(x -> System.out.println(x)); // reuse it to filter again! throws IllegalStateException long count = stream.filter(x -> "b".equals(x)).count(); System.out.println(count); }}
Output
java.lang.IllegalStateException: stream has already been operated upon or closedat java.util.stream.AbstractPipeline.(AbstractPipeline.java:203)at java.util.stream.ReferencePipeline.(ReferencePipeline.java:94)at java.util.stream.ReferencePipeline$StatelessOp.(ReferencePipeline.java:618)at java.util.stream.ReferencePipeline$2.(ReferencePipeline.java:163)at java.util.stream.ReferencePipeline.filter(ReferencePipeline.java:162)at com.hostingcompass.whois.range.run.TestJava8.main(TestJava8.java:25)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
示例 - 重用流
TestJava8.java
package com.mkyong.java8;import java.util.function.Supplier;import java.util.stream.Stream;public class TestJava8 { public static void main(String[] args) { String[] array = {"a", "b", "c", "d", "e"}; Supplier<Stream<String>> streamSupplier = () -> Stream.of(array); //get new stream streamSupplier.get().forEach(x -> System.out.println(x)); //get another new stream long count = streamSupplier.get().filter(x -> "b".equals(x)).count(); System.out.println(count); }}
Output
a b c d e 1
每个
get()
都会返回一个新的流 阅读全文
0 0
- Java 8 Stream 流已被操作或关闭
- [置顶] Java 8新增的Stream操作
- Java 8 之 Stream 操作符
- java 8 Stream()操作流介绍
- JAVA Stream 简单操作
- java stream操作
- Java的stream流操作
- [Java 8] (7) 利用Stream类型的"懒"操作
- 详解Java 8中Stream类型的“懒”操作
- Java Stream(8)(Stream完结)
- Java 8 Stream
- java 8 中的stream
- Java 8 Stream Tutorial
- Java 8 Stream API
- Java 8 Stream 原理
- Java 8 Stream
- Java 8 Stream API
- 【java performance】在finally块中关闭Stream
- 网站压力测试工具 Webbench
- Thinking in java-19 final、finally、finalize关键字
- muduo读书笔记01
- unlink之android中的利用
- 关于struct结构体内存分配的学习小结
- Java 8 Stream 流已被操作或关闭
- Nmap脚本文件分析(AMQP协议为例)
- OpenSUSE 11 安装Qt5.0,失败,失败,失败,留个坑,以后来填,万一实现了呢
- ElasticSearch使用Array
- Java实现-合并两个排序链表
- JS+PHP实现用户输入数字后取得最大的值并显示为第几个
- java异常处理总结
- zookeeper节点创建
- MFC的序列化操作文件读写