gpt4 book ai didi

java - 列表对象引用在 Java 循环期间更改

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:20:13 35 4
gpt4 key购买 nike

我找不到关于此的任何主题。我想知道在如下所示的循环中更改列表类的引用是否安全:

Tree minimalTree = someTree;
for (Tree st : minimalTree.getSubtrees()) {
if (condition)
minimalTree = st;
}

迭代器是否会重置并为新引用重新启动?

编辑:我忘了说:这段代码适用于我想缩小树中元素搜索范围的情况,比方说,包含某些元素的较小的树。在这种情况下,继续只查找“min​​imalTree”的内部结构而不是整个“someTree”结构会更快。

最佳答案

不,迭代不会被重置。根据JLS :

The enhanced for statement is equivalent to a basic for statement of the form:

for (I #i = Expression.iterator(); #i.hasNext(); ) {
{VariableModifier} TargetType Identifier = (TargetType) #i.next();
Statement
}

该定义清楚地表明迭代器仅在循环的第一次迭代之前初始化一次。

在这方面,使用增强的 for 语句遍历数组时的行为是相似的。

但是我个人认为这是不好的做法,因为它使代码难以理解。

关于java - 列表对象引用在 Java 循环期间更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28706151/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com