2015-03-02 17 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 
} 
相關問題