Java8 复用stream对象

简介: java学习记录

在JAVA 8的Stream方法中,流是不能复用的,只要调用了终端操作比如: foreachanyMatch 等,Stream就会自动关闭,如果再次调用,将会提示如下错误:

java.lang.IllegalStateException: streamhasalreadybeenoperateduponorclosedatjava.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:229)
atjava.util.stream.ReferencePipeline.reduce(ReferencePipeline.java:479)
atcom.mirana.stream.FlatMapReduceTest.testFlatMap(FlatMapReduceTest.java:49)
atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)
atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
atjava.lang.reflect.Method.invoke(Method.java:498)


如果需要复用流(比如重复代码过多需要抽出公共方法),那么可以使用 Supplier 函数来实现:

publicclassTest {
publicstaticvoidmain(String[] args) {
List<Integer>data=Arrays.asList(3, 2, 11, 3, 1, 1);
Supplier<Stream<Integer>>streamSupplier= () ->data.stream().filter(e->e<5);
System.out.println(streamSupplier.get().anyMatch(e->e==1));
System.out.println(streamSupplier.get().noneMatch(e->e>6));
    }
}

输出;

truetrue


相关文章
|
24天前
|
Java API 数据处理
Java新特性:使用Stream API重构你的数据处理
Java新特性:使用Stream API重构你的数据处理
|
1月前
|
Java 大数据 API
Java Stream API:现代集合处理与函数式编程
Java Stream API:现代集合处理与函数式编程
191 100
|
1月前
|
Java API 数据处理
Java Stream API:现代集合处理新方式
Java Stream API:现代集合处理新方式
209 101
|
1月前
|
并行计算 Java 大数据
Java Stream API:现代数据处理之道
Java Stream API:现代数据处理之道
187 101
|
2月前
|
存储 Java API
Java Stream API:现代数据处理之道
Java Stream API:现代数据处理之道
335 188
|
2月前
|
存储 Java API
Java Stream API:现代数据处理之道
Java Stream API:现代数据处理之道
240 92
|
13天前
|
Java Unix Go
【Java】(8)Stream流、文件File相关操作,IO的含义与运用
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。!但本节讲述最基本的和流与 I/O 相关的功能。我们将通过一个个例子来学习这些功能。
106 1
|
3月前
|
Oracle Java 关系型数据库
掌握Java Stream API:高效集合处理的利器
掌握Java Stream API:高效集合处理的利器
353 80
|
3月前
|
安全 Java API
Java 8 Stream API:高效集合处理的利器
Java 8 Stream API:高效集合处理的利器
240 83
|
1月前
|
存储 数据可视化 Java
Java Stream API 的强大功能
Java Stream API 是 Java 8 引入的重要特性,它改变了集合数据的处理方式。通过声明式语法,开发者可以更简洁地进行过滤、映射、聚合等操作。Stream API 支持惰性求值和并行处理,提升了代码效率和可读性,是现代 Java 开发不可或缺的工具。
Java Stream API 的强大功能