注意: doSomething が要素を削除するかどうかはわかりません。これは、私のデータ構造が処理する必要がある例外的なケースです。
私の問題は単純です:
int size = list.size();
for(int i = 0; i < size; i++) {
MyObj mo = list.get(i);
mo.doSomething();
}
doSomething() がリストから mo を削除すると、リストが縮小したため、最終的に ArrayIndexOutOfBounds を取得します。
削除の可能性がある反復を許可するには、どのデータ構造を使用する必要がありますか? ここでは反復子を使用できません。つまり、doSomething にブール値を返させて iterator.remove() を呼び出すことはできません。データ構造は何らかの方法で状況を処理し、残りの要素を反復処理し続ける必要があります。
編集: doSomething が要素を削除するかどうかはわかりません。これは、私のデータ構造が処理する必要がある例外的なケースです。
パート II =>どこでもコードの重複を避けるためのスマート リスナー通知機能の作成