使用している ArrayList からオブジェクトを削除できます。これをゲームエンジンで使用していますが、動作します。
http://code.google.com/p/game-engine-for-java/source/browse/src/com/gej/map/Map.java#350を参照してください。
for (int i = 0; i < objects.size(); i++) {
GObject other = objects.get(i);
if (other.isAlive()) {
// Update it
} else {
// Else remove it
objects.remove(i);
}
}
あなたが抱えているエラーは、これがfor each
ループでは機能しないということです。通常のfor
ループで試してみると、問題が解決するはずです。
コードをこれに変更します。
ArrayList<Integer> list =new ArrayList<Integer>();
ArrayList<Integer> remove = new ArrayList<Integer>();
list.add(100);
list.add(200);
list.add(300);
list.add(400);
// Mark to remove
for (int i=0; i<list.size(); i++){
remove.add(list.get(i));
}
list.removeAll(remove);
remove.clear();
// adding 200 at the end because if added in the loop,
// it removes the 200 and adds every loop which causes
// unnecessary memory usage.
list.add(200);