首页 > Java > java教程 > 正文

迭代和修改列表时如何避免ConcurrentModificationException?

DDD
发布: 2024-11-25 09:02:10
原创
640 人浏览过

How to Avoid ConcurrentModificationException When Iterating and Modifying a List?

并发修改异常处理

问题:

迭代时遇到并发修改异常一个列表,即使似乎没有并发修改

实现:

提供的代码同时创建一个列表和一个列表迭代器。然后,它在迭代列表时将元素添加到列表中,从而导致异常。

import java.util.*;

public class SomeClass {
    public static void main(String[] args) {
        List<String> s = new ArrayList<>();
        ListIterator<String> it = s.listIterator();

        for (String a : args)
            s.add(a);

        if (it.hasNext())
            String item = it.next();

        System.out.println(s);
    }
}
登录后复制

解决方案:

要避免该异常,请修改代码如下:

import java.util.*;

public class SomeClass {

    public static void main(String[] args) {
        List<String> s = new ArrayList<>();

        for(String a : args)
            s.add(a);

        ListIterator<String> it = s.listIterator();    
        if(it.hasNext()) {  
            String item = it.next();   
        }  

        System.out.println(s);

    }
}
登录后复制

在此修改后的代码中,列表迭代器是在所有元素添加到列表后创建的。这确保了列表在迭代器的创建和使用之间不会被修改。

以上是迭代和修改列表时如何避免ConcurrentModificationException?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板