在我的程序中,我已经创建了球队(例如足球),现在我想创建一种方法,让每个团队与其他所有团队进行比赛。我的方法抛出ConcurrentModificationException。这里是:

public void playMatches(){
    for (Team team : mTeams) {
        mTeams.remove(team);
        for (Team team1 : mTeams) {
            match(team, team1);
        }
        mTeams.add(team);
    }
}


我要从mTeams中删除团队本身,以使其不会与自己竞争,但这会引发Exception。我该如何处理?

最佳答案

由于您似乎了解什么是中断的,所以让我们考虑问题的“如何处理”部分。好消息是您根本不需要修改集合。

而不是通过删除然后添加项目来修改集合,而是在内部循环中调用match时从外部循环中跳过团队,如下所示:

for (Team team : mTeams) {
    for (Team team1 : mTeams) {
        if (team.equals(team1)) continue;
        match(team, team1);
    }
}

10-06 06:11