概述
最近,在写一个程序时,遇到了ArrayList数组一边遍历和一边添加的操作,由于习惯吧,一开始我就写成了类似于下面的这样(下面代码只是用来说明这种情况):
import java.util.ArrayList;
public class Test {
public static void main(String[] args){
ArrayList<String> stringArray = new ArrayList<>();
stringArray.add("one");
stringArray.add("two");
stringArray.add("three");
stringArray.add("four");
stringArray.add("five");
stringArray.add("six");
stringArray.add("seven");
stringArray.add("eight");
stringArray.add("nine");
/**
* 一边遍历一边添加
*/
for (String str : stringArray){
System.out.println(str);
stringArray.add("ten");
}
}
}
谁知道报错如下:
Exception in thread "main" java.util.ConcurrentModificationException
at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:1009)
at java.base/java.util.ArrayList$Itr.next(ArrayList.java:963)
at Test.main(Test.java:20)
编程久了就很快意识到肯定是边遍历边添加出错了,由于我也是刚入门Java不久,就网上搜索一番,发现很多解决的方法:
https://blog.csdn.net/Landon_Xu/article/details/53414971
参考后,我选择不改变数据类型,所以就修改为下面这样:
下面代码会造成 无限循环,代码只供问题说明参考
import java.util.ArrayList;
public class Test {
public static void main(String[] args){
ArrayList<String> stringArray = new ArrayList<>();
stringArray.add("one");
stringArray.add("two");
stringArray.add("three");
stringArray.add("four");
stringArray.add("five");
stringArray.add("six");
stringArray.add("seven");
stringArray.add("eight");
stringArray.add("nine");
/**
* 一边遍历一边添加
*/
for (int i = 0; i < stringArray.size(); i++){
String str = stringArray.get(i);
System.out.println(str);
stringArray.add("ten");
}
}
}
这样问题就解决了!!
其中的缘由网上有很多解释,在这里我只记录一下这种错误的简单解决方式,作为学习 java 的积累,以后会慢慢深入学习的!!!
最后
以上就是时尚镜子为你收集整理的Java的ArrayList数组遍历添加问题解决的全部内容,希望文章能够帮你解决Java的ArrayList数组遍历添加问题解决所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复