2015-03-02 52 views
-2

我有以下代码:ConcurrentModificationException的不是发生

List list = getItems(); //where getItems() returns List<Item> 


     do { 
      list.add(adPosition); 
      adPosition = adPosition + (AD_REPEAT_VALUE + 1); 
      adsNumber++; 
     } while (adsNumber < MAX_NUMBER_OF_ADS && adPosition < list.size()); 

,从我知道这个码应该同ConcurrentModificationException的崩溃,因为列表的大小被修改。但它不会崩溃。这怎么可能?!

+1

你不重复的列表中,你每次循环是“独立”的代码 – amit 2015-03-02 09:17:39

回答

1

Concurrent Modification当我们在List(或基本上迭代列表)对象上使用迭代器时,同时实际列表发生更改时会引发异常。

+0

一部分,如果我有使用了它会崩溃的“for”声明? – Laura 2015-03-02 09:20:34

+0

不,你的代码中没有任何地方在迭代你的列表,请访问文档,如果它有点难 – Vihar 2015-03-02 09:23:33

+0

好的,谢谢。我似乎误解了这个例外。再次感谢:) – Laura 2015-03-02 09:26:30

2

将元素添加到列表是完全合法的。查看ConcurrentModificationException文档:当你同时添加和迭代名单就像是抛出:

Iterator it = list.iterator(); 
while (it.hasNext()) { 
    list.add(elem); // ConcurrentModificationException thrown here 
} 
相关问题