Моя программа бросает ConcurrentModificationException
, когда я запускаю следующий фрагмент кода. В ходе некоторых исследований я обнаружил, что элемент в списке не может быть добавлен или удален в цикле итератора. Что мне делать сейчас, чтобы удалить элемент в List<Bean>
?Почему удаление элемента из списка вызывает ConcurrentModificationException?
for (Iterator<Entry<String, List<Bean>>> iterator = dataMap.entrySet().iterator(); iterator.hasNext();) {
Entry<String, List<Bean>> entry = (Entry<String, List<Bean>>)iterator.next();
List<Bean> dateWiseValues = (List<Bean>) entry.getValue();
int j = 0;
for (Bean statBean : dateWiseValues) {
for (int i = 0; i < commonElements.size(); i++) {
if(statBean.getDate().equalsIgnoreCase(commonElements.get(i))) {
//remove the bean
entry.getValue().remove(j);
}
}
j++;
}
}
удалите его позже, или вы можете скопировать свои значения в список «зеркало» и перебрать зеркало, удалив их из фактического списка. –
это также может быть интересно: http://docs.oracle.com/javase /1.5.0/docs/api/java/util/concurrent/CopyOnWriteArrayList.html – subarachnid
@Subarachnid, это намного лучше, опубликуйте его как ответ –