java - 流已被操作或关闭 - Java 8

标签 java exception filter java-8 java-stream

<分区>

为什么我有下一个异常?

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)

如何更改代码来修复它?

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

最佳答案

您不能对 Streams 进行多次操作,因此最好使用 Collections,因为它们可以多次使用。

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 简化了第二个语句。

关于java - 流已被操作或关闭 - Java 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36575679/

相关文章:

java - Tomcat 关闭 websocket 连接并出现错误

java - 配置 eclipse 插件 PMD 以使用多个规则集

Visual Studio 代码中的 Java

php - Controller 能否捕获模型抛出的异常?

c# - 过滤单词列表的最快方法

python - 设计过滤函数的谓词

java - 使用词边界和 POS 将句子拆分为固定大小的 block

php - 对每个应用程序错误抛出异常

java - 如何使用 mockito 检查是否没有抛出异常?

html - 如何为 IE 6/7/8 制作自定义过滤器