既にループしている間にリストを反復処理しようとしています (ネストされたループ)。以下のコードを検討してください。
ArrayList<Integer> list = new ArrayList<Integer>(); // add some values to it
for(int i : list) { // ConcurrentModificationException
Iterator iterator = list.iterator();
while(iterator.hasNext()) {
int n = iterator.next();
if(n % i == 0) {
iterator.remove();
}
}
}
上記の例では、ConcurrentModificationException が発生します。もちろん、要素を削除する条件は単なる例です。
私は何かが欠けていると確信しています。しかし、例外をスローせずにJavaで同じことを達成するループをどのように構築すればよいでしょうか?