【发布时间】:2019-07-31 13:22:54
【问题描述】:
从文件中获取以某个字符串开头的行的最佳方法是什么,如果没有找到此类行,则获取以另一个字符串开头的行。
例如。有两个字符串
aaa
bbb
并且有一个带有字符串的文件。需要获取以aaa 开头的所有行。如果没有这样的行,则获取所有以bbb 开头的行。
对于带行的文件
aaa 1
bbb 2
aaa 3
ccc 4
返回必须是
aaa 1
aaa 3
对于带行的文件
zzz 1
bbb 2
zzz 3
返回必须是
bbb 2
我知道如何做到这一点,但我的解决方案在我看来太笨拙了。 例如,我试过这样:
List<String> lines = null;
List<String> result = null;
Integer maxValue = null;
try (Stream<String> stream = Files.lines(Paths.get("test.txt"))) {
lines = stream
.filter(l -> l.startsWith("aaa") || l.startsWith("bbb"))
.collect(Collectors.toList());
} catch (IOException e) {}
if (lines != null) {
result = lines.stream().filter(l -> l.startsWith("aaa")).collect(Collectors.toList());
}
if (result == null) {
result = lines.stream().filter(l -> l.startsWith("bbb")).collect(Collectors.toList());
}
有没有更好的办法?
【问题讨论】:
-
通常你会发布你尝试过的东西,并说出出了什么问题。否则这是一个“为我做”的帖子......至少描述你的算法太笨拙
-
好的,抱歉。我添加了我在问题中尝试过的示例。
标签: java java-8 java-stream