异常:java.util.ConcurrentModificationException

Quote:

异常:java.util.ConcurrentModificationException

在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
*
……
【阅读全文】
posted @ 2007-04-29 01:24  dkcndk  阅读(236)  评论(0编辑  收藏  举报