【发布时间】:2015-04-26 16:29:38
【问题描述】:
我找不到任何关于此的主题。我想知道在像下面这样的循环期间更改列表类的引用是否安全:
Tree minimalTree = someTree;
for (Tree st : minimalTree.getSubtrees()) {
if (condition)
minimalTree = st;
}
迭代器是否被重置并重新启动以获取新引用?
编辑:我忘了说:这段代码适用于我想缩小树中元素搜索范围的情况,比如包含某些元素的较小树。在这种情况下,继续只寻找“minimalTree”的内部结构而不是整个“someTree”结构会更快。
【问题讨论】:
-
测试时会发生什么?
-
您可能应该为此使用递归调用。
-
到目前为止它似乎工作正常,但我不确定它是否适用于大规模处理。但也许@biziclop 是对的,应该避免这种编码......
-
问题已经得到解答,关于替代实现的建议可能不会算作“答案”,因此只需评论:与此处给出的建议相反:您应该 不 使用递归调用来解决这个问题 - 至少要考虑到即使对于中等大小的树,您也可能很容易遇到
StackOverflowError。