【发布时间】:2017-10-10 05:32:52
【问题描述】:
我有一个包含太多信息的文件。喜欢,
AA BB CC DD
WW FF SS FF
..
..
..
然后,
**** Input data ***
**
*
142.12123 Input taken for metrics
123.1222 Calculation point
.
.
.
**** Another Input ****
有没有办法只选择从
输入数据
直到之前
“另一个输入”
我尝试将文件读取为流和过滤器,
Stream<String> output = Files
.lines(Paths.get("a.out"))
Map<Boolean, List<String>> partition = output
.collect(Collectors.partitioningBy(s -> s.contains("Input data")));
但过滤器似乎只过滤了一行。我们可以过滤多行或从头到尾设置吗?
【问题讨论】:
-
您可以尝试使用在找到
Input data后设置为true 并在Another Input之后设置为false 的标志,该标志将在过滤器中进行评估以获取该块。但可能有更简单的解决方案。 -
你的过滤谓词匹配一行。您希望您的代码如何神奇地工作?
-
感谢您的cmets,我对这个Streams和collectors很陌生,只想检查如何设置结束参数或简单的解决方案。
-
@AbhijitSarkar 看看我的回答,这样你就可以让它工作了
标签: java filter java-stream