pineapple丿夜曲

导航

阿里规范学习总结-不要再foreach对元素进行add()/remove()操作,

在foreach循环中,对元素进行 remove()/add() 操作需要使用Iterator ,如果运行在多线程环境下,需要对Iterator对象枷锁。

public class ForeachTest {
    public static void main(String[] args){
        List<String> a = new ArrayList<String>();     
        a.add("1");      
        a.add("2");      
        for (String temp : a) {
            if("2".equals(temp)){              
                a.remove(temp);
            } 
        }  
        System.out.println(a);
    }
}

此方法执行报错信息如下:

Exception in thread "main" java.util.ConcurrentModificationException
    at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:859)
    at java.util.ArrayList$Itr.next(ArrayList.java:831)
    at sysman_service_intf.ForeachTest.main(ForeachTest.java:28)

从错误信息能够看出异常出现在checkForComodification()方法中。

下面我们分析异常出现的原因:

 

posted on 2017-12-08 21:49  pineapple丿夜曲  阅读(282)  评论(0编辑  收藏  举报