Дополнительно
Удаление элементов из списка
При просмотре списка я хотел бы удалить элемент списка в зависимости от условия. Смотрите код ниже.
Это дает мне исключение ConcurrentModification
.
for (Object a : list) {
if (a.getXXX().equalsIgnoreCase("AAA")) {
logger.info("this is AAA........should be removed from the list ");
list.remove(a);
}
}
Как это можно сделать?
100
6
Делаем дополнительное предположение, что список строк. Как уже было получено, необходим
list.iterator ()
. listIterator также может выполнять небольшую навигацию.Вам нужно использовать
Iterator
и вызыватьremove ()
наiterator
вместо использования циклаfor
.Вы не можете сделать это, потому что вы уже зацикливаетесь на этом.
Чтобы избежать этой ситуации, используйте Iterator, который гарантирует вам безопасное удаление элемента из списка ...
Вы не можете и не должны изменять список, повторяя его. Вы можете решить эту проблему, временно сохранив объекты для удаления:
Помимо всех отличных решений, предлагаемых здесь, я хотел бы предложить другое решение.
Я не уверен, что вы можете добавлять зависимости, но если вы можете, вы можете добавить https://code.google.com/p/guava-libraries/ в качестве зависимости. Эта библиотека добавляет поддержку многих основных функциональных операций на Java и может сделать работу с коллекциями намного проще и удобочитаемой.
В коде я заменил тип списка на T, поскольку я не знаю, для чего напечатан ваш список.
Эта проблема с гуавой может быть решена следующим образом:
И где-то еще вы затем определяете XXX_EQUAL_TO_AAA как:
Тем не менее, это, вероятно, излишне в вашей ситуации. Это просто то, что становится все более мощным, чем больше вы работаете с коллекциями.
Ой, также, вам нужен этот статический импорт: