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

Using lambda expression for nested for loops in java

我正在 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 循环时,我就不能写了。感谢任何帮助。

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

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

因为 referencesDao.getRoutingCodes() 似乎是 return 一个列表,你应该可以直接使用 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 return 是 collection 则可以使用内置方法 forEach。但是,如果 returns 是一个数组并使用隐式迭代器,则需要对数组进行流式处理。我的示例假设它是一个集合(可能是 List 实现)。