介绍
同一个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));