学院首页>网络编程>JSP> 异常:java.util.ConcurrentModificationException

异常:java.util.ConcurrentModificationException

作者: 来源: 添加时间:2006-5-21 20:55:33

在Map或者Collection的时候,不要用它们的API直接修改集合的内容,如果要修改可以用Iterator的remove()方法,例如:

public void setReparation( Reparation reparation ) {
  for (Iterator it = this.reparations.iterator();it.hasNext();){ //reparations为Collection
   Reparation repa = (Reparation)it.next();
   if (repa.getId() == reparation.getId()){
this.reparations.remove(repa);
 this.reparations.add(reparation);
   }
  }
   }

如上写会在运行期报ConcurrentModificationException,可以如下修改:

public void setReparation( Reparation reparation ) {
  boolean flag = false;
  for (Iterator it = this.reparations.iterator();it.hasNext();){ //reparations为Collection
   Reparation repa = (Reparation)it.next();
   if (repa.getId() == reparation.getId()){
it.remove();
flag = true;
break;
   }
  }
  if(flag){
this.reparations.add(reparation);
  }
}

具体可以参考:http://gceclub.sun.com.cn/yuanchuang/week-14/iterator.html


站内搜索