java - 处理集合对象的增强 for 循环行为

标签 java

因为我是 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/

相关文章:

java - 创建弹出窗口时出现问题

java - 如何使用 onclick 函数从 MYSQL 加载的 ListView 传递值?

java - 编译器如何推断无参数方法的类型?

java - 一个二维数组空间中的 2 个或多个元素 JAVA

java - 单击Java时绘制多辆车

java - 如何提高 BigQuery 读取性能

java - 如何设置变量imageview src?

java - Spring boot Service类中出现空指针异常

java - 如何最好地为用户配置上传位置以上传支持文件

java - JAVA代码量度分析