84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
スレッド「メイン」で例外が発生しました java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)at java.util.ArrayList$Itr.next(ArrayList. java:851)at wan.ForEach.main(ForEach.java:22)
认证0级讲师
foreach是通过迭代器来实现的,使用迭代器遍历元素时,容器不能试图改变容器的结构,如remove、add操作会抛出异常; 可以使用迭代器的remove要素を削除するメソッド。
foreach
remove
http://tyrion.iteye.com/blog/...
上記で明確に述べましたが、ここでは 2 つの簡単な解決策を説明します1. イテレータの削除2. トラバースするリストをコピーして、元のリストを操作します。 もちろんイテレータの削除をお勧めします
上の階で言われていることは非常に公式的なもので、for(Object obj:list) のメソッドは要素を削除するために list の delete メソッドを呼び出すことができません。そうしないと、Iterator の構造を決定する必要があるため、例外がスローされます。したがって、それを削除するには 2 つの方法があります。1 つはリストをコピーし、新しいリストをループして古いリストの要素を削除する方法です。もう 1 つは for(int i; i<count; i++) ループを使用する方法です。したがって、カーソルを使用して削除できます。配列の添字の境界を越えないように注意してください。
卵を数えるとき、誰かがこっそり卵をカゴに入れたり、持ち去ったりすると、自分で卵を持ち帰ったり、入れたりしない限り、間違った数え方をすることになります。これも同じ原理です。プログラム内で
foreach
是通过迭代器来实现的,使用迭代器遍历元素时,容器不能试图改变容器的结构,如remove、add操作会抛出异常; 可以使用迭代器的remove
要素を削除するメソッド。上記で明確に述べましたが、ここでは 2 つの簡単な解決策を説明します
1. イテレータの削除
2. トラバースするリストをコピーして、元のリストを操作します。
もちろんイテレータの削除をお勧めします
上の階で言われていることは非常に公式的なもので、for(Object obj:list) のメソッドは要素を削除するために list の delete メソッドを呼び出すことができません。そうしないと、Iterator の構造を決定する必要があるため、例外がスローされます。したがって、それを削除するには 2 つの方法があります。1 つはリストをコピーし、新しいリストをループして古いリストの要素を削除する方法です。もう 1 つは for(int i; i<count; i++) ループを使用する方法です。したがって、カーソルを使用して削除できます。配列の添字の境界を越えないように注意してください。
卵を数えるとき、誰かがこっそり卵をカゴに入れたり、持ち去ったりすると、自分で卵を持ち帰ったり、入れたりしない限り、間違った数え方をすることになります。これも同じ原理です。プログラム内で