此异常发生在使用迭代器(Iterator)时,如果迭代器内的对象发生改变,则会发生此异常。
代码演示
public class iteratorDemo {
public static void main(String[] args) {
Collection c = new HashSet();
c.add(new Name("ffff1","222"));
c.add(new Name("f2","adwe"));
c.add(new Name("fff3","ssha"));
Iterator i = c.iterator();
while(i.hasNext()){
Name name = (Name) i.next();
if(name.getFirstName().length() < 3){
i.remove(name);
//如果换成c.remove(name);会产生例外;
//java.util.ConcurrentModificationException
}
}
System.out.println(c);
}
Name类
public class Name {
private String firstName,lastName;
public Name(){}
public Name(String firstName, String lastName) {
super();
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String toString(){
return firstName+" "+lastName;
}
}
在while循环内部,执行的是Iterator对象,遍历的过程是封闭的过程,所以当循环内部的对象发生变化时,就会发生异常