在java中为嵌套for循环使用lambda表达式

在java中为嵌套for循环使用lambda表达式,java,java-8,Java,Java 8,我正在学习java中的lambda表达式。我有使用“for”循环的代码,如下所示: for (RoutingCode routingCode: referencesDao.getRoutingCodes()) { ReferencesUtil.routingCodeToXml(references.addElement("referenceType"), routingCode); for (AutoCreateIssue ac: referencesDao.get

我正在学习java中的lambda表达式。我有使用“for”循环的代码,如下所示:

for (RoutingCode routingCode: referencesDao.getRoutingCodes()) {
  ReferencesUtil.routingCodeToXml(references.addElement("referenceType"), routingCode);

  for (AutoCreateIssue ac: referencesDao.getAutoCreateIssues(routingCode.getId())) {
    ReferencesUtil.autoCreateIssueToXml(references.addElement("referenceType"), ac);
  }
}
我想为上述内容编写一个lambda表达式。如果只有一个for循环,我可以编写lambda表达式,但如果有嵌套的for循环,则无法编写lambda表达式。感谢您的帮助

这是我用一个循环尝试的:

referencesDao.getRoutingCodes().stream().forEach(routingCode -> ReferencesUtil.routingCodeToXml(references.addElement("referenceType"), routingCode));

由于
referencesDao.getRoutingCodes()
似乎返回一个列表,因此您应该能够直接使用
forEach
,而无需流式处理。看来这就是你想要完成的

referencesDao.getRoutingCodes()
    .forEach(routingCode -> {
        references.addElement("referenceType", routingCode);
        referencesDao
            .getAutCreatedIssues(routingCode.getId())
            .forEach(ac -> ReferenceUtil
                            .autoCreateIssueToXml(
                                references.addElement(
                                            "referenceType",
                                            ac
                                )
                            )
            );
    });
这只是提供一个想法。这可能需要一些调整,因为我很容易误解了一些字段和方法

例如:

for (AutoCreateIssue ac: referencesDao.getAutoCreateIssues(routingCode.getId()))

如果
getAutoCreateIssues
返回一个
collection
,则可以使用内置的方法
forEach
。但如果返回一个数组并使用隐式迭代器,则需要对该数组进行流式处理。我的示例假设它是一个集合(可能是一个
列表
实现)。

@GhostCat感谢您的回复。我正在努力将
routingCode.getId()
从第一个循环传递到第二个循环。