Войти или зарегистрироваться

Помогите как избежать ConcurrentModificationException

  • Автор темы Автор темы musel70
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

musel70

Активный участник
Пользователь
Баллы
88
Всем Добрый День!
Появилась такая проблема.
У меня есть класс турели и лист с турелями. Также у меня есть BukkitRunnable который каждые 10 тиков пробегает по листу. Как можно удалить объект из лист без появления этой ошибки. Я пробовал сделать это так

Код:
public static void removeTurret(Turret turret) {
        Iterator<Turret> it = Turret.totemList.iterator();
        while (it.hasNext()) {
            Torret t = it.next();
            if(t == turret) {
                it.remove();
            }
          
        }
    }

Код:
public class TowerRunnable extends BukkitRunnable {

    @Override
    public void run() {
        Iterator<Turret> it = Turret.totemList.iterator();
        while (it.hasNext()) {
            Turret t = it.next();
            t.tick();
        }
    }

}
Помогите пожалуйста исправить
 
Всем Добрый День!
Появилась такая проблема.
У меня есть класс турели и лист с турелями. Также у меня есть BukkitRunnable который каждые 10 тиков пробегает по листу. Как можно удалить объект из лист без появления этой ошибки. Я пробовал сделать это так

Код:
public static void removeTurret(Turret turret) {
        Iterator<Turret> it = Turret.totemList.iterator();
        while (it.hasNext()) {
            Torret t = it.next();
            if(t == turret) {
                it.remove();
            }
         
        }
    }

Код:
public class TowerRunnable extends BukkitRunnable {

    @Override
    public void run() {
        Iterator<Turret> it = Turret.totemList.iterator();
        while (it.hasNext()) {
            Turret t = it.next();
            t.tick();
        }
    }

}
Помогите пожалуйста исправить
Нельзя модифицировать коллекцию во время прохода по ней циклом.
 
А как тогда поступить?

Ну попробуйте скажем... Добавить булевскую переменную и когда у вас идет цикл, ставите true, и делаете дополнительное условие в месте добавления в коллекцию, мол ждать пока цикл не кончится и переменная не станет false.
 
Ну попробуйте скажем... Добавить булевскую переменную и когда у вас идет цикл, ставите true, и делаете дополнительное условие в месте добавления в коллекцию, мол ждать пока цикл не кончится и переменная не станет false.
А как тогда поступить?

Большое спасибо за идею. Как проверю отпишусь
Все работает всем спасибо.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх