List remove时出错"ConcurrentModificationException"
来源:互联网 发布:人工智能处理器 编辑:程序博客网 时间:2024/06/17 15:19
1. 现象: 在遍历list的时候,出现如下错误:
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
at java.util.ArrayList$Itr.next(Unknown Source)
at com.mylist.test.ListTest.removeFun1(ListTest.java:25)
at com.mylist.test.ListTest.main(ListTest.java:13)
2. 参考代码:
package com.mylist.test;
import java.util.ArrayList;
import java.util.List;
public class ListTest {
List<String> strList = new ArrayList<String>();
public static void main(String args[]){
ListTest t = new ListTest();
t.init();
t.removeFun1("a"); // 这里出错, 出错信息就是上面开头提到的。
//t.removeFun2("a"); //正确,
t.print();
}
public void init(){
strList.add("a");
strList.add("b");
strList.add("c");
}
//这种方法是java后来增加的一种语法,这里,remove的时候就会出错了。
public void removeFun1(String str) {
for (String tmpStr: strList) {
if (str.equals(tmpStr)) {
strList.remove(str);
}
}
}
//这是传统的for循环的写法,能够正确执行remove.
public void removeFun2(String str) {
for (int i = 0;i< strList.size();i++) {
if (str.equals(strList.get(i))) {
strList.remove(strList.get(i));
}
}
}
public void print() {
for (String tmpStr: strList) {
System.out.println(tmpStr);
}
}
}
3. 分析:请参考下面这个文章:
http://blog.csdn.net/smcwwh/article/details/7036663
- List remove时出错"ConcurrentModificationException"
- 从ConcurrentModificationException到 list remove
- list set集合remove() ConcurrentModificationException 原因
- list执行remove和add方法时,报java.util.ConcurrentModificationException的原因
- Python中的list循环时使用remove,出错。
- list中remove的问题,以及 ConcurrentModificationException异常
- 关于 list.remove(obj);方法在迭代器中报java.util.ConcurrentModificationException
- list动态remove处理并发异常ConcurrentModificationException 问题
- 解决 java.util.ConcurrentModificationException map不能在循环时remove
- List中使用remove出错的问题分析
- 关于List的ConcurrentModificationException
- List java.util.ConcurrentModificationException
- java.util.ConcurrentModificationException迭代器出错
- java 遍历list、set时 删除元素 java.util.ConcurrentModificationException
- List remove
- List::remove()
- list remove
- list remove
- CF 425B Sereja and Table
- 利用vertical-align:middle实现垂直居中对齐
- Memcached常用命令及使用说明
- mybatis There is no getter for property named 'xx' in 'class java.lang.String
- 聊点小小的面试
- List remove时出错"ConcurrentModificationException"
- Hibernate完成CRUD
- SSH整合初步---设计及各层的创建顺序
- android设计模式之控制反转(IOC)原则
- MFC中的MVC及两者之间的关系
- Kettle 使用备忘录:生成xml文件
- 详解@Autowired、@Qualifier和@Required
- 【Git】git rebase+fix conflict+git add+git rebase --continue或git merge+fix conflict+git add+git commit
- Cocos2dx 3.0 过渡篇(十七) std::bind与CC_CALLBACK不得不说的故事