java中如何将嵌套for循环转换为流

vx6bjr1n  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(268)

这个问题在这里已经有答案了

使用subclass的值筛选类的流(1个答案)
如何使用java streams比较两个arraylist并使用过滤器获取list1(1个答案)
Java8获取地址以p开头的所有员工(2个答案)
5天前关门了。
我正在尝试使用Java8流重构下面的代码。
如何筛选标签中包含“第1季”的问题。

public List<GHIssue> getFirstSeasonIssues() throws IOException {
    List<GHIssue> firstSeasonIssues = new ArrayList<>();
    List<GHIssue> issues = repository.getIssues(GHIssueState.ALL);

    for (GHIssue issue : issues) {
        Collection<GHLabel> labels = issue.getLabels();
        for (GHLabel label : labels) {
            if (label.getName().equals("Season1")) {
                firstSeasonIssues.add(issue);
            }
        }
    }
    return firstSeasonIssues;
}
66bbxpm5

66bbxpm51#

你可以用 filteranyMatch 找到具有匹配标签的所有问题。

List<GHIssue> firstSeasonIssues =
    issues.stream()
           .filter(i -> i.getLabels().stream().anyMatch(l -> l.getName().equals("Season1")))
           .collect(Collectors.toList());

请注意,这会将每个具有匹配标签的问题添加到输出中一次 List .
原始循环可能会多次将同一问题添加到输出中 List 如果“第1季”标签多次出现在同一期中,但我相信您不想多次添加同一期。

相关问题