2013-04-14 140 views
-2

我試圖解決這個問題,但無論如何我都沒有解決。有人能幫助我嗎?使用迭代如何解決此代碼中的ConcurrentModificationException?

for(Iterator<Block> iterator = event.blockList().iterator(); iterator.hasNext();) 
{ 
    Block b = iterator.next(); 

    if (((RegiaoCuboid) r).contains(b)) 
     event.blockList().remove(b); 
} 
+1

在發佈到SO之前請先研究一下。這個具有相同問題的確切問題已經在SO上多次提出和回答。 – djechlin

+0

對不起,我曾經找過,但還沒找到。 –

+0

您是如何搜索的?你谷歌「java修復concurrentmodificationexception」並閱讀結果? – djechlin

回答

3

卸下:

iterator.remove(); 

ConcurrentModificationException被拋出時,其中無效開放迭代的方式集合的改變。在這種情況下,您直接在集合上呼叫remove

+0

謝謝,我忘記了那可以做到。 –

-2

迭代它時,您無法修改列表。我建議將你想刪除的塊添加到新列表中,然後迭代並從主列表中刪除它們(編輯:或者,做別人說的)。另外,如果你正在做我認爲的你,我會建議在Bukkit論壇上提出進一步的問題。這個問題更普遍,但Bukkit特定的問題將更容易被熟悉該區域的人員回答。

+0

錯誤,請參閱其他答案。 – djechlin

+0

不正確,因爲@Reimeus正確指出'Iterator'具有remove方法。 –

相關問題