Используя следующий код приведет к java.util.ConcurrentModificationException
java.util.ConcurrentModificationException - Как удалить с помощью итератора
final AnimationTimer timer = new AnimationTimer() {
@Override
public void handle(long timestamp) {
for (ListIterator<myCircle> List = CircleList.listIterator(); List.hasNext();) {
myCirle check = List.next();
if (CheckCollisionFunction(check) == true) {
this.stop();
CircleList.clear();
gameOverFunction();
}
}
}
}
Так им с помощью итератора, чтобы проверить, если какой-либо из моих кругов сталкиваясь с моим плеером круг ,
Когда я очистить список:
CircleList.clear();
я получаю исключение.
java.util.ConcurrentModificationException
Это то, что вы иногда удаляете за пределы итератора при использовании итератора. Может кто-нибудь, пожалуйста, покажите мне, как удалить все в моем списке, используя итератор?
Или другой способ остановить эту ошибку.
Это мой список.
private final ObservableList<myCircle> CircleList = FXCollections.observableArrayList();
Адрес, на который вы можете позвонить()? Нет причин для удаления элементов по одному через итератор. Вам просто нужно вызвать clear() после того, как вы закончите с повторением списка. – Eran
final AnimationTimer timer = new AnimationTimer() { @Override public void handle (long timestamp) {Все в этом таймере, но я также использую this.stop(); для остановки таймера анимации. – Dynermite
Вы очищаете список из другого потока, чем тот, который выполняет итерацию по списку? Это объясняет исключение. – Eran