在 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
实现)。
我正在 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
实现)。