事例
通常在操作集合的时候,如ArrayList,遍历删除元素的时候,有可能导致java.util.ConcurrentModificationException异常,如下:
1.for循环
public static void methodRemove(List<String> list) {
for(String s:list) {
if("3".equals(s)) {
list.remove(s);
}
}
System.err.println(list.toString());
}
2.Iterator迭代
public static void methodRemove(List<String> list) {
Iterator<String> it = list.iterator();
while(it.hasNext() ) {
String v = it.next();
if("3".equals(v)) {
list.remove(v);
}
}
System.err.println(list.toString());
}
上面2中情况都能导致java.util.ConcurrentModificationException异常。
实际上,直接用基本的for循环遍历即可,因为是单线程操作,不会出现上述异常,如下:
public static void methodRemove(List<String> list) {
for (int i = 0; i < list.size(); i++) {
if("3".equals(list.get(i))) {
list.remove(i);
}
}
System.err.println(list.toString());
}