再利用できませんでした。
import java.util.stream.*;
public class StreamTest {
public static void main(String[] args) {
// a-z のストリーム作成
Stream<String> stream = Stream.iterate('a', c -> ++c).map(Object::toString).limit('z' - 'a' + 1);
// stream初利用
try {
String collect_01 = stream.filter(str -> {
byte[] b = str.getBytes();
return (b[0] % 2 == 0);
}).collect(Collectors.joining(";"));
System.out.println(collect_01);
} catch (Exception e) {
System.err.println(e.getMessage());
}
// stream再利用 -- 失敗する
try {
String collect_02 = stream.map(str -> "[" + str + "]").collect(Collectors.joining(";"));
System.out.println(collect_02);
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}
結果
- [stream has already been operated upon or closed]というエラーがでました。
b;d;f;h;j;l;n;p;r;t;v;x;z
stream has already been operated upon or closed
- 処理つつ、カウントしつつ云々とかするには、なんでもかんでもstreamじゃないほうがいいのかな〜?