- 在使用list集合使用for——earch和iterator进行循环删除list集合中的内容是会报错。
package com.collection; import java.util.ArrayList; import java.util.List; /** * 探究list中迭代的错误 * @author 26920 * */ public class forearch { public static void main(String[] args) { List<String> list=new ArrayList<String>(); list.add("22"); list.add("22"); list.add("22"); list.add("22"); for (String string : list) { list.remove(string); } } }
-
运行起来就报错了
Exception in thread "main" java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909) at java.util.ArrayList$Itr.next(ArrayList.java:859) at com.collection.forearch.main(forearch.java:18)
-
解决方法
package com.collection; import java.util.ArrayList; import java.util.List; /** * 探究list中迭代的错误 * @author 26920 * */ public class forearch { public static void main(String[] args) { List<String> list=new ArrayList<String>(); list.add("22"); list.add("22"); list.add("22"); list.add("22"); for (int i=0;i<list.size();i++) { list.remove(i); } System.out.println(list.size()); } }
把for-earch循环改成简单的for循环,输出结果为2.应为list.size()的大小在变化
-
产生这样的原因跟Iterator中的modCount变量有关!
for-earch迭代时的错误————java.util.ConcurrentModificationException
最新推荐文章于 2024-06-19 08:22:28 发布