【发布时间】:2017-12-07 17:39:16
【问题描述】:
使用流filter 操作比使用continue 操作的迭代器有什么优势吗?
示例for 迭代:
for (ApiSite apiSite : sites) {
Site mSite = Site.getSiteByName(apiSite.getName());
if (mSite == null || deletedSitesToSkip.contains(mSite)) {
LOGGER.info("Skipping site: {} as this has been deleted ", apiSite.getName());
continue;
}
// operation
}
stream 与 filter 示例:
sites.stream().filter(apiSite -> {
Site mSite = Site.getSiteByName(apiSite.getName());
return (mSite != null && !deletedSitesToSkip.contains(mSite));
}).map(//some operation);
【问题讨论】:
-
声明式初始化。
-
我认为
stream API更具可读性 -
顺便说一句,您的示例不匹配。第一个是你
getSiteByName,第二个你没有。您还在未定义的第二个中引用mSite。 -
@Michael 修正了不一致的问题 - 问题更多的是使用
filter构造循环与continue。
标签: java java-8 java-stream