欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

注意在使用ArrayList进行for循环遍历的时候不能直接移除下标,arraylist下标

来源: javaer 分享于  点击 13327 次 点评:114

注意在使用ArrayList进行for循环遍历的时候不能直接移除下标,arraylist下标


    public static void main(String[] args) {
        List<String> strings = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            strings.add("1");
        }
        for (String s : strings) {
            strings.remove(s);
            //此处是错的
        }
    }

异常:

Exception in thread "main" java.util.ConcurrentModificationException
    at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
    at java.util.ArrayList$Itr.next(ArrayList.java:851)

其实之前也遇到过,解决方法就是使用CopyOnWriteArrayList来遍历移除。
这次又给坑了,记下来,事不过三!

    public static void main(String[] args) {
        List<String> strings = new CopyOnWriteArrayList<>();
        for (int i = 0; i < 10; i++) {
            strings.add("1");
        }
        for (String s : strings) {
            strings.remove(s);
        }
        System.out.println(strings.size());
    }
// 0

相关文章

    暂无相关文章

用户点评