2013-04-14 143 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方法。 –

相关问题