21xrx.com
2024-12-23 03:57:53 Monday
登录
文章检索 我的文章 写文章
Java加强for循环中改变值不生效的解决方法
2023-06-15 14:37:47 深夜i     --     --
Java加强for循环 值修改 List集合

在Java中,加强for循环广泛应用于遍历数据集合。然而,当我们在循环体内尝试改变数据集合中的值时,会发现这些变化并不会被永久保存,而是被忽略掉了。这是因为加强for循环其实是以只读方式遍历数据集合,它无法改变数据集合中的值。那么,我们该如何在加强for循环中改变数据集合中的值呢?下面,就给出一种可行的解决方法。


List list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));

for (Integer i : list) {

  if (i == 3)

    i = 100;

  

}

System.out.println(list);

代码执行结果:


[1, 2, 3, 4, 5]

从结果可以看出,虽然在循环体内对变量i进行了赋值,但最终List的内容却没有改变。原因是在加强for循环中,i并不是指向List中的元素本身,而是指向了List中的元素的一个副本。所以,当我们改变变量i时,只是改变了这个副本的值,而没有真正改变List中的元素的值。

要解决这个问题,我们可以手动设置List中指定位置的元素来改变它的值,而不是试图直接改变变量i的值。


List list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));

for (int i = 0; i < list.size(); i++) {

  if (list.get(i) == 3) {

    list.set(i, 100);

  }

}

System.out.println(list);

代码执行结果:


[1, 2, 100, 4, 5]

这次,List中的第3个元素已经被成功地改变为了100。

通过以上的解释和案例,相信大家对Java加强for循环中改变值不生效的问题有了更清楚的理解和解决方案。

三个

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复