首页  >  文章  >  Java  >  迭代和修改列表时如何避免ConcurrentModificationException?

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

DDD
DDD原创
2024-11-25 09:02:10642浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn