从列表中删除项目时的Java并发修改异常

标签 java android

<分区>

Possible Duplicate:
java.util.ConcurrentModificationException on ArrayList

我正在尝试从线程内的列表中删除项目。我收到了 ConcurrentModificationException。我读到这个link它与从列表中删除项目有关。我将示例代码放在下面。在我的情况下,如果没有这个异常(exception),我该如何正确地做到这一点。

try 
{
    for(Game game:appDeleg.getGlobalGames().getGames())
    {
        if(game.getOwner().getId().equals(params[0]))
        {
            synchronized (appDeleg.getGlobalGames().getGames())
            {
                appDeleg.getGlobalGames().getGames().remove(game);
            }
        }

    }
}

catch (Exception e) 
{
    e.printStackTrace();
    return "noconnection";
}

最佳答案

使用迭代器:

Iterator<Game> i = appDeleg.getGlobalGames().getGames().iterator();

Game game;
while(i.hasNext()) {
    game = i.next();
    if(game.getOwner().getId().equals(params[0]))
          i.remove();
    }
}

关于从列表中删除项目时的Java并发修改异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13528349/

相关文章:

Java-Consumer中什么地方使用wait

java - Tomcat - 响应后做事

java - 如何使用 Android 按钮获取整数作为用户输入?

java - 如何在android中的对话框中显示 ListView ?

java - 在 Spring MVC 中 - model.addAttribute 动态数据的用法以及如何将数据放置在 jsp 文件中

java - 使用 jersey/apache REST 客户端解析多行、多列文本响应

java - 在java中转换1900年之前的时间戳

android - 如何注销andengine中的移动修饰符?

java - Eclipse 中的 Android SDK Manager 找不到路径

android - 通知 ID 不变