在我的程序中,我创建了团队(例如足球),现在我想创建一种方法,让每个团队都与所有其他团队进行比赛。我的方法抛出 ConcurrentModificationException。在这里:
public void playMatches(){
for (Team team : mTeams) {
mTeams.remove(team);
for (Team team1 : mTeams) {
match(team, team1);
}
mTeams.add(team);
}
}
我正在从 mTeams 中删除团队本身,这样它就不会与自己对战,但这会引发异常。我该如何处理?
最佳答案
既然您似乎明白发生了什么问题,那么让我们考虑一下您问题的“如何处理”部分。好消息是您根本不需要修改您的 Collection 。
与其通过删除然后添加项目来修改集合,不如在内循环中调用 match
时从外循环中跳过团队,如下所示:
for (Team team : mTeams) {
for (Team team1 : mTeams) {
if (team.equals(team1)) continue;
match(team, team1);
}
}
关于java - 在 Java 中使用嵌套 for 循环时避免 ConcurrentModificationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34827331/