在我的程序中,我已经创建了球队(例如足球),现在我想创建一种方法,让每个团队与其他所有团队进行比赛。我的方法抛出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);
}
}