今天在寫程序時(shí)遇到了 java.util.ConcurrentModificationException? 異常,
參考網(wǎng)上程序后,解決了問題,至少現(xiàn)在沒有這個(gè)異常了。
主要是在刪除iterator元素時(shí)使用了原來的hashmap名稱,改成直接使用iterator的remove方法就可以了。
參考如下:
異常:java.util.ConcurrentModificationException
Posted on 2005年6月20日 13:06在Map或者Collection的時(shí)候,不要用它們的API直接修改集合的內(nèi)容,如果要修改可以用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);
??????????? }
??????? }
?? }
如上寫會(huì)在運(yùn)行期報(bào)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