首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >流已经运行或关闭- Java 8

流已经运行或关闭- Java 8
EN

Stack Overflow用户
提问于 2016-04-12 14:05:11
回答 1查看 5.8K关注 0票数 1

为什么我会有下一个例外?

代码语言:javascript
复制
Exception in thread "main" java.lang.IllegalStateException: stream has already been operated upon or closed
at java.util.stream.AbstractPipeline.<init>(AbstractPipeline.java:203)...

com.search.offer.OffersSelector.isGood(OffersSelector.java:23)如何修改代码来修复它?

代码语言:javascript
复制
Stream<String> titleExclusions = ResourceUtility.contentToUtf8TreeSet("+.txt").
        stream().filter(item -> item.length() == 0).collect(Collectors.toSet()).stream();
//...
titleExclusions.filter(tittle::contains).collect(Collectors.toSet()).size() == 0;//line 23
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-12 14:23:14

您不能在流上操作不止一次,所以最好使用集合,因为它们可以不止一次使用。

代码语言:javascript
复制
Set<String> titleExclusions = ResourceUtility.contentToUtf8TreeSet("+.txt")
                                             .stream()
                                             .filter(item -> !item.isEmpty())
                                             .collect(Collectors.toSet());
// uses titleExclusions 
boolean noMatches = titleExclusions.stream()
                                   .noneMatch(tittle::contains);
// uses titleExclusions again.

注意:我假设您想要源文件中的非空行,而不是一组空白行。filter获取保留的内容的Predicate,而不是丢弃的内容。

谢谢你@Holger简化了第二个陈述。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36575679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档