转换流中深度为2的循环的嵌套Java

转换流中深度为2的循环的嵌套Java,java,java-8,java-stream,Java,Java 8,Java Stream,我觉得我的代码过时了。我有两个嵌套的for循环。 不是我想完全用java流来做的。 但我真的不知道这是否可能。 我现在正在研究一个Jira系统,所以这就是为什么我的变量名包含“issue” 在过滤器之后尝试了forEach?没有所有的定义,如IssueLink、MutableIssue等。任何人都很难帮助您,因为我们不能将代码复制到IDE中并编译它。尝试将您的示例转换为包含所有必要信息而无需额外细节的内容。当然,如果您想将其放到IDE中,您需要所有信息。但实际上,在纸上编写代码不需要这样做。我认

我觉得我的代码过时了。我有两个嵌套的for循环。 不是我想完全用java流来做的。 但我真的不知道这是否可能。 我现在正在研究一个Jira系统,所以这就是为什么我的变量名包含“issue”


过滤器
之后尝试了
forEach
?没有所有的定义,如IssueLink、MutableIssue等。任何人都很难帮助您,因为我们不能将代码复制到IDE中并编译它。尝试将您的示例转换为包含所有必要信息而无需额外细节的内容。当然,如果您想将其放到IDE中,您需要所有信息。但实际上,在纸上编写代码不需要这样做。我认为使用流并不是那么可行,因为在循环中它会导致执行
someFunc(…)
。在该函数中,您从外环给出最佳位置。在执行
.map(…)
时,此信息将在流的最终执行中丢失。实际上,我认为对于第二个for,您将需要一个流foreach循环。但我也认为你是对的,因为最后调用了一个方法,它需要来自第一个for循环的参数,所以不可能只使用流来完成这个特定示例。因为在执行流时,在第二个for循环中无法再访问第一个for循环的此参数。
for (IssueLink outwardLinkBestellung : list) {
    bestellungPositionIssue = (MutableIssue) outwardLinkBestellung.getDestinationObject();
    if (BESTELLUNG_POSITION.equalsIgnoreCase(bestellungPositionIssue.getIssueType().getName())) {
        List<IssueLink> outwardLinksBestellPos = getOutwardLinks(bestellungPositionIssue.getId());
        for (IssueLink outwardLinkBestellPos : outwardLinksBestellPos) {
            MutableIssue personIssue = (MutableIssue) outwardLinkBestellPos.getDestinationObject();
            if (PERSON.equalsIgnoreCase(personIssue.getIssueType().getName())) {
                someFunc(list1, bestellungPositionIssue, list2, param, personIssue);
            }
        }
    }
}
outwardLinksBestellung.stream()
        .map(e -> (MutableIssue)e.getDestinationObject())
        .filter(e -> BESTELLUNG_POSITION.equalsIgnoreCase(e.getIssueType().getName()))
        .map(e -> getOutwardLinks(e.getId()))
        .flatMap(e-> e.stream())
        .map(e -> (MutableIssue) e.getDestinationObject())
        .filter(e -> PERSON.equalsIgnoreCase(e.getIssueType().getName()))