java Stream-同一个Stream不能调用多次,否则报错

介绍

同一个Stream不能调用多次,否则报错

例子1

List<String> list = new ArrayList<>();
Collections.addAll(list,"李雷", "韩梅梅", "lucy", "lisi","李小四");

Stream<String> stream = list.stream();
stream.forEach(item -> System.out.println(item));
// 同一个stream,调用第二次,会报错
stream.forEach(item -> System.out.println(item));

报错如下:

Exception in thread "main" java.lang.IllegalStateException: stream has already been operated upon or closed
    at java.util.stream.AbstractPipeline.sourceStageSpliterator(AbstractPipeline.java:279)
    at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)
    at std.S4只能调用一次.main(S4只能调用一次.java:16)

例子2

List<String> list = new ArrayList<>();
Collections.addAll(list,"李雷", "韩梅梅", "lucy", "lisi","李小四");

Stream<String> stream = list.stream();
stream.filter(item -> item.startsWith("李"));
// 同一个stream,调用第二次,会报错
stream.forEach(item -> System.out.println(item));

原文出处:https://malaoshi.top/show_1IX5HAM4YpTE.html