我有这段代码,它给了我并发修改异常。即使看不到任何并发修改,我也无法理解为什么继续得到它。
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); } }
为了避免ConcurrentModificationException,你应该这样编写代码:
ConcurrentModificationException
import java.util.*; public class SomeClass { public static void main(String[] args) { List<String> s = new ArrayList<String>(); for(String a : args) s.add(a); ListIterator<String> it = s.listIterator(); if(it.hasNext()) { String item = it.next(); } System.out.println(s); } }
A java.util.ListIterator允许你在迭代期间修改列表,但不能在创建和使用列表之间进行修改。
A java.util.ListIterator