首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Files.lines().allMatch()有序吗?

Files.lines().allMatch()有序吗?
EN

Stack Overflow用户
提问于 2022-08-05 14:51:53
回答 1查看 57关注 0票数 0

我正试图摆脱while ((line = br.readLine()) != null),但事实证明,在这种情况下,流的局限性很难以优雅的方式克服。我想要的第一行符合某一标准,最后两行在此之前,它符合两个不同的标准。这似乎是我所能做的最好的,但只有在遇到正确顺序的行时,它才能工作,这样才不会提前终止。所以他们是吗?从文件中很难分辨。

代码语言:javascript
运行
复制
String[] savedLines = { "", "", "" };
try (Stream<String> lines = Files.lines(file)) {
    lines.allMatch(line -> {
        if (line.startsWith(s1)) {
            savedLines[0] = line;
        else if (line.startsWith(s2) && line.contains(s3)) {
            savedLines[1] = line;
        } else if (line.startsWith(s4)) {
            savedLines[2] = line;
            return false;
        }
        return true;
    });
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-05 14:56:37

考虑到这些行是从文件中读取的,我看不出它们为什么不能按文件顺序排列--除了读取当前行、然后读取下一行等之外,还需要更多的存储空间来执行其他操作。

不管怎么说,不要这样做:你在和what it says in the documentation about the predicate of Stream.allMatch作对

predicate -一种非干扰的无状态谓词,可应用于此流的元素。

您的谓词不是无状态的。您不应该在allMatch中这样做。

坚持BufferedReader

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

https://stackoverflow.com/questions/73251632

复制
相关文章

相似问题

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