【发布时间】:2013-06-17 03:58:38
【问题描述】:
从迭代器中删除匹配的对象是否更好,以便下一次迭代变得更快。 例如:
for(Favorite favFolder : favFolders) {
Set<String> rootObjList = new HashSet<String>();
String favFolderRootUuid = favFolder.getLink();
Iterator<FavoriteObjectBean> objIter = favObjPage.getBeans().iterator();
while(objIter.hasNext()) {
FavoriteObject favObj = objIter.next();
if(favObj.getFavoriteFolderUuid().equalsIgnoreCase(favFolderRootUuid)) {
rootObjList.add(favObj.getObjectUuid());
objIter.remove();
}
}
}
在上面的代码中,如果对象符合条件,我将从迭代器中删除它们。
所以我的问题是:删除是否更好,以便后续迭代更快,因为要执行的迭代次数更少?
【问题讨论】:
-
外循环的后续迭代不会变得更快,因为它们使用了不同的
favObjPage.getBeans()列表。 -
您确定可以在迭代器中移除对象吗?
-
这就是迭代器的特殊功能,在迭代时删除:)
标签: java performance iterator iteration