java - 在java中使用lambda表达式进行嵌套for循环
问题描述
我正在学习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()
似乎返回了一个列表,因此您应该可以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
返回 a则可以使用collection
内置方法。forEach
但是如果返回一个数组并使用隐式迭代器,则需要对数组进行流式处理。我的示例假设它是一个集合(可能是一个List
实现)。
推荐阅读
- php - Symfony 中基于接口的 DI 配置
- amazon-web-services - AWS CodePipeline 失败
- terraform - 更新状态以使将计划转换为模块更容易?
- oracle - 通过 JDBC 运行 SQL,如何参数化表名
- visual-studio - 如何从 PowerShell 或其他命令行启动 Visual Studio 的“跟踪变更集”窗口?
- android - 列表视图仅显示 10 项
- c# - 无法从字符串中过滤内容
- php - Laravel 验证规则“不同”
- asp.net - 配置 SABRE SOAP API
- azure - Azure Easy Tables - 如何在 15 岁后加载项目