我找不到关于此的任何话题。我想知道在像下面这样的循环中更改列表类的引用是否安全:
Tree minimalTree = someTree;
for (Tree st : minimalTree.getSubtrees()) {
if (condition)
minimalTree = st;
}
迭代器是否会重置并重新启动以获取新引用?
编辑:我忘了说:此代码适用于以下情况:我想缩小对树中元素的搜索范围,例如,包含某些元素的较小树。在这种情况下,仅查找“minimalTree”的内部结构而不是整个“someTree”结构会更快。
最佳答案
不,迭代不会重置。根据JLS:
该定义显而易见,迭代器仅在循环的第一次迭代之前初始化一次。
在这方面,使用增强的for语句遍历数组时的行为与此类似。
但是我个人认为这是不好的做法,因为它会使代码难以理解。