java - 在 Java 中使用 lambda 表达式进行嵌套 for 循环

标签 java java-8

我正在学习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返回一个集合,则可以使用内置方法forEach。但如果返回一个数组并使用隐式迭代器,则需要对该数组进行流式传输。我的示例假设它是一个集合(可能是一个 List 实现)。

关于java - 在 Java 中使用 lambda 表达式进行嵌套 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67687269/

相关文章:

java - JVM 何时会在堆栈跟踪中省略行信息,我该如何防止它发生?

java - 这段代码如何以及为何起作用?找到将一个单词更改为另一个单词的最少步骤数

eclipse - Java 8 & 缺少所需的能力 Require-Capability : osgi. ee;过滤器 ="(&(osgi.ee=JavaSE)(version=1.8))"

基于谓词的Java 8 Stream indexOf方法

java - 在封闭范围内定义的局部变量 log 必须是最终的或有效最终的

Java Hibernate AutoIncrement Identity set ID to start 0 mySQL

java-旋转文件提取?

Java JDK 问题或其他问题

java - 如何将嵌套对象列表缩减为 Map

java - 如果提前 1、2、3、4 分钟,如何将其四舍五入到最接近的 5 分钟间隔?