時獲得ConcurrentException。我有一個像下面的列表的東西: -穿越我在一個非常特殊的狀態列表
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
現在,當我做多的類型遍歷,如採用先進的,迭代器,以及正常的循環,下面是示例代碼片段: -
1 >高級循環: -
try {
for(String a : list) {
System.out.println(a);
list.add("f");
}
} catch (Exception e) {
e.printStackTrace();
}
2>迭代: -
try {
Iterator<String> itr = list.iterator();
while(itr.hasNext()) {
System.out.println(itr.next());
list.add("f");
}
} catch (Exception e) {
e.printStackTrace();
}
3>正常循環: -
for (int i=0;i<list.size();i++) {
System.out.println(list.get(i));
list.add("f");
}
現在,特有的問題是,採用了先進的當for循環和迭代,我得到以下異常: -
java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
at java.util.ArrayList$Itr.next(Unknown Source)
the reason i know, that while iterating through a list, one cannot modify it parallely.
但是當我用正常的循環,那麼它的工作原理好吧,我是否缺少什麼?
請幫忙!!! ..
那麼怎麼樣的正常循環,爲什麼它的工作原理? – 2011-04-13 04:59:14
添加無效由List創建的Iterator對象,正常for循環不會創建迭代器,因此沒有任何操作失效,因此它可以工作 – sbridges 2011-04-13 05:04:40