我有一個對象Bullet,我一次添加到兩個ArrayList中,下面簡要介紹這些列表。完成某些操作後,我希望從兩個列表中刪除一個項目符號。這種方法是否正確?我一直在得到一個錯誤:java.util.ConcurrentModificationExceptionJava:同時從不同ArrayList中刪除兩個對象
另外,你可以想出一個比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;
}
}
}
}
}
編輯:的問題源是我在不同的地方使用的迭代器的列表中的一個,在確切的同時,因此而錯誤。此代碼適用於可更新列表。
你也可以使用比較器類。 –