我正在学习 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);
}
}
Run Code Online (Sandbox Code Playgroud)
我想为上面写一个 lambda 表达式。如果只有一个 for 循环,我可以写出 lambda 表达式,但是当有嵌套的 for 循环时就不能写了。任何帮助表示赞赏。
这是我用一个循环尝试的:
referencesDao.getRoutingCodes().stream().forEach(routingCode -> ReferencesUtil.routingCodeToXml(references.addElement("referenceType"), routingCode));
Run Code Online (Sandbox Code Playgroud)
由于referencesDao.getRoutingCodes()
似乎返回一个列表,您应该可以forEach
直接使用而无需流式传输。看来这就是你想要完成的。
referencesDao.getRoutingCodes()
.forEach(routingCode -> {
references.addElement("referenceType", routingCode);
referencesDao
.getAutCreatedIssues(routingCode.getId())
.forEach(ac -> ReferenceUtil
.autoCreateIssueToXml(
references.addElement(
"referenceType",
ac
)
)
);
});
Run Code Online (Sandbox Code Playgroud)
这只是提供一个想法。它可能需要一些调整,因为我很容易误解了某些字段和方法。
例如:
for (AutoCreateIssue ac: referencesDao.getAutoCreateIssues(routingCode.getId()))
Run Code Online (Sandbox Code Playgroud)
如果getAutoCreateIssues
返回 acollection
则forEach
可以使用内置方法。但是如果返回一个数组并使用隐式迭代器,则该数组将需要流式传输。我的示例假定它是一个集合(可能是一个List
实现)。
归档时间: |
|
查看次数: |
84 次 |
最近记录: |