HardBirch

ConcurrentModificationException只解决方案

时间:13-12-10 栏目:安卓技术篇 作者:魔豆先生 评论:0 点击: 1,842 次

在Map或者Collection的时候,不要用它们的API直接修改集合的内容(否则会出现 java.util.ConcurrentModificationException 异常),如果要修改可以用Iterator的remove()方法,例如:

Java代码

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,可以如下修改:

Java代码

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);
}
}

声明: 本文由( 魔豆先生 )原创编译,转载请保留链接: ConcurrentModificationException只解决方案

ConcurrentModificationException只解决方案:等您坐沙发呢!

发表评论


QQ群互动

Linux系统与内核学习群:194051772

WP建站技术学习交流群:194062106

魔豆之路QR

魔豆的Linux内核之路

魔豆的Linux内核之路

优秀工程师当看优秀书籍

优秀程序员,要看优秀书!

赞助商广告

友荐云推荐