Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > ConcurrentModification для списка ArrayList


Автор: lesha_od 7.4.2007, 10:41
Добрый день,
Из списка ArrayList<SomeType>, состоящего из некоторого числа элементов, хочу удалить те, которые isEnabled=false. То есть в цикле перебираю элементы и удаляю ненужные.
Но если это делать просто как 

Код

for (Type t : list) list.remove(t);


то будет выдано исключение ConcurrentModificationException.

Можно делать "через ж":
Код


for (int i=0;i<tms.size();i++) {
            // ...... проверка нужного индекса
            tms.remove([i--]);
            // .........
}


либо 

Код

for (Type t : list) if (t.isEnabled()) tmp.add(t);
list=tmp;


Вопрос в том, как это делать по-человечески?smile) Или только так?

Автор: y3u 7.4.2007, 11:16
 smile 

Код

for (Iterator<Type> iterator = collection.iterator(); iterator.hasNext();) {
    Type t = iterator.next();
    if (!t.isEnabled()) {
        iterator.remove();
    }
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)