私は2つのArrayListsに一度に追加するBulletオブジェクトを持っています。リストは以下で簡単に説明します。特定の操作が行われた後、両方のリストから箇条書きを削除したいと思います。このアプローチは正しいですか?私はエラーが発生し続ける:java.util.ConcurrentModificationExceptionJava:異なるArrayListsから2つのオブジェクトを同時に削除する
また、この方法でオブジェクトを扱う目的で、ArrayListよりも優れた解決策がありますか?
//there are ArrayList<Bullet> bullets and ArrayList<Updatable> updatable, in the class
public void removeBullet(Bullet bullet) {
for (ListIterator<Bullet> bulletIterator = bullets.listIterator(); bulletIterator.hasNext();) {
Bullet tempBullet = bulletIterator.next();
if (tempBullet.equals(bullet)) {
for (ListIterator<Updatable> updatableIterator = updatable.listIterator(); updatableIterator.hasNext();) {
Updatable tempUpdatable = updatableIterator.next();
if (tempUpdatable.equals(bullet)) {
updatableIterator.remove();
bulletIterator.remove();
return;
}
}
}
}
}
EDIT:問題の原因は、私は、別の場所に正確に同じ時刻に、リストのいずれかで、したがって、エラーをイテレータを使用したことでした。このコードは、更新可能なリストでうまくいきました。
でもコンパレータクラスを使用できます。 –