【发布时间】:2014-09-07 21:03:39
【问题描述】:
如果我写
String myFirstString = "a";
String mySecondString = "b";
List<String> lstOfStrings = new ArrayList<String>();
lstOfStrings.add(myFirstString);
lstOfStrings.add(mySecondString);
for (String value : lstOfStrings) {
if(value.equals("a")) {
lstOfStrings.remove("a");
System.out.println("removed successfully");
}
}
它工作正常,但是,
如果我改变 list 中的插入顺序,它会给出 java.util.ConcurrentModificationException 见下面的代码
String myFirstString = "a";
String mySecondString = "b";
List<String> lstOfStrings = new ArrayList<String>();
lstOfStrings.add(mySecondString);
lstOfStrings.add(myFirstString);
for (String value : lstOfStrings) {
if(value.equals("a")) {
lstOfStrings.remove("a");
System.out.println("removed successfully");
}
}
给出 java.util.ConcurrentModificationException
为什么每个人都会出现这种行为?我知道有很多方法,如 Iterator、CoppyOnWriteArraylist 作为 ConcurrentModificationException 异常的解决方法。但我想知道这个具体案例的原因。请解释一下。
【问题讨论】:
-
谷歌这个错误,你会得到很多关于这个的帖子。
标签: java