我有这个片段:
final Stream<String>stream = getStream().filter(a->StringUtils.contains(a,"http"));
stream.filter(a->true);//LINE PROBLEM I JUST THOUGHT THAT THIS WOULD JUST IGNORE
System.out.println(stream.count());
但是抛出:
Exception in thread "main" java.lang.IllegalStateException: stream has already been operated upon or closed
我知道流只能使用一次,但这条线有什么问题?它正在消耗流?
stream.filter(a->true);//NOT A TERMINAL OPERATION A INTERMEDIATE OPERATION
如果我撕掉它,只需像这样使用我的代码
System.out.println(stream.filter(a->true).count());
不抛出异常。
如果我使用此代码,则会抛出 NotException。
Stream<String>stream = getStream().filter(a->StringUtils.contains(a,"http"));
stream = stream.filter(a->true);
System.out.println(stream.count());
但是为什么过滤器抛出异常而不是终端操作?
我只使用最简单的代码来理解这个想法。
我正在使用带有 Java 8 更新 122 的 Netbeans 8.2,也在 Intellij Idea 2018 Ultimate 中进行了测试。
饮歌长啸
相关分类