Мое требование, чтобы удалить из ArrayList, как это:Удалить элемент из ArrayList с помощью ListIterator в цикле внутри цикла
ArrayList<User> user = new ArrayList<User>();
ListIterator<User> outerIterator = null;
ListIterator<User> innerIterator = null;
User outer = null;
User inner = null;
for(outerIterator = user.listIterator(); outerIterator.hasNext();) {
outer = outerIterator.next();
for(innerIterator = user.listIterator(); innerIterator.hasNext();) {
inner = innerIterator.next();
if(SomeOperationOn(outer,inner)) {
innerIterator.remove();
}
}
}
Приведенный выше код дает Exception
Exception in thread "main" java.util.ConcurrentModificationException
, как и следовало ожидать, потому что я пытаюсь удалить из innerIterator, в то время как externalIterator - Итератор на том же объекте (пользователь).
Есть ли способ удалить элемент из ArrayList с помощью ListIterator в цикле внутри цикла?
Даже если вы разрешите 'ConcurrentModificationException', из-за вызова' outerIterator.remove() 'ваш' ArrayList' будет пуст в конце этого кода. Это то, что вы хотите? – rgettman
externalIterator.remove() Я использовал только для проверки, но да в конце списка циклов будет пусто. –
Тогда почему бы просто не объявить новый пустой список равного размера? (или повторно инициализировать это?) – River