因为我是 Java 的学习者..我遇到了以下代码
public static void main(String[] args) {
ArrayList<String> a = new ArrayList<>();
a.add("1");
a.add("2");
for(String str: a){
a = new ArrayList<>();
System.out.println(str);
}
}
我猜的答案是
1 null (since the reference is now pointing another object)
但答案是
1 2
我在这里无法理解增强 for 循环的行为。
最佳答案
增强的 for 循环创建一个 Iterator
来迭代 ArrayList
的元素。将 a
引用更改为引用新的 ArrayList
不会影响循环创建的 Iterator
。
你的循环等同于
Iterator<String> iter = a.iterator();
while (iter.hasNext()) {
String str = iter.next();
a = new ArrayList<>();
System.out.println(str);
}
关于java - 处理集合对象的增强 for 循环行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49383813/