如何在 Java 中对无限流进行模式匹配?

How do I do pattern match on an infinite stream in Java?

提问人:Thirsty Learner 提问时间:5/31/2021 最后编辑:Thirsty Learner 更新时间:5/31/2021 访问量:135

问:

我不确定这是否可能。 假设我有一个无限的传入字符流,我想找到某个字符串(比如说,一个短单词)的第一个匹配项。是否可以使用 Java 的流 API 实现它?

我能想到的唯一明显的算法是,如果在流中遇到单词的第一个字符,则检查流中的下一个字符,如果它等于单词的下一个字符,则检查第三个字符。因为单词或模式只有几个字符,所以这种算法听起来很有道理。但是我发现很难用流 API 实现。我想知道是否有可能实现这一目标。这在理论上可能是不可能的。

一些专家建议我应该使用 InputStream。也许我没有清楚地解释我的意图。我的想法是创建一个无限的随机字符流,看看我什么时候能遇到我指定的单词。这就像一个实验。java.util.stream API 非常方便地生成无限随机字符流,但似乎很难进行匹配。InputStream 似乎更不切实际。它只接受来自文件、url 和用户控制台的输入。无穷大是不可能的。我该怎么办?感谢您分享您的智慧。

Java 设计模式 匹配 无限

评论

1赞 luk2302 5/31/2021
不,您不应该为此使用 java 流 api (java.util.stream),您应该关注的流是与 InputStream 和 company 相关的流。在那里,您可以在数据传入时读取数据,并在您击中比赛时停止。不幸的是,两者都是“流”。
1赞 Sweeper 5/31/2021
流并不是真正为此而设计的,这就是为什么你发现它“很难实现”。相反,您可以实现一个生成一堆字符的无限,并从中读取。InputStreamScanner
0赞 Thirsty Learner 6/2/2021
谢谢。也许我没有清楚地解释我的意图。我的想法是创建一个无限的随机字符流,看看我什么时候能遇到我指定的单词。这就像一个实验。java.util.stream API 非常方便地生成无限随机字符流,但似乎很难进行匹配。InputStream 似乎更不切实际。它只接受来自文件、url 和用户控制台的输入。无穷大是不可能的。我该怎么办?感谢您分享您的智慧。

答: 暂无答案