Java ConcurrentModificationException异常原因和解决方法

注:更详细https://blog.csdn.net/androidboy365/article/details/50540202/

不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator 方式,如果并发操作,需要对 Iterator 对象加锁。 反例:

List<String> a = new ArrayList<String>();

a.add("1"); a.add("2");

for (String temp : a)

{  if("1".equals(temp))

  { a.remove(temp); }

}

说明:以上代码的执行结果肯定会出乎大家的意料,那么试一下把“1”换成“2”,会是同样的 结果吗?

正例:

Iterator<String> it = a.iterator();

while(it.hasNext())

{ String temp = it.next();

if(删除元素的条件)

{ it.remove(); }

}

posted @ 2018-05-09 16:53  宇枫  阅读(459)  评论(0编辑  收藏  举报