【发布时间】:2019-08-21 03:30:19
【问题描述】:
1) 为什么第二个 forEach() 不起作用?具体规则是什么?
2) 如何重新设置流以再次运行 forEach?我是否总是需要创建另一个 IntStream 实例,例如 IntStream sm2 = str.chars(); 才能在 sm2 (sm2.forEach(...)) 上工作,还是有办法“重置”sm?
String str = "A B C D";
IntStream sm = str.chars();
sm.forEach(System.out::println); // works
// IllegalStateException: stream has already been operated upon or closed
sm.forEach(ch -> System.out.println(ch));
附:我知道forEach() 是一个终端操作,但我理解它的方式是forEach() 不返回流=>我不能链接调用,这不能回答我的问题(我不'不需要链接调用任何进一步用点分隔此类调用)。
【问题讨论】:
-
一个终端操作不仅不会返回一个流,它还会关闭你调用它的流。
-
在 Java 8 中,每个 Stream 类代表一个一次性数据序列,并支持多种 I/O 操作。
标签: java java-8 java-stream