Что я пытаюсь сделать - дважды вызвать метод для двух разных List
:
- Элемент P должен быть удален, если isTranslation () имеет значение true.
- Элемент P и следующий элемент должны быть удалены, если isTitle () имеет значение true;
Я выполняю следующий код:
private List<P> nlPars; //initialised in constructor
private List<P> enPars; //initialised in constructor
public void build(){
...
removeHeaders(nlPars); //first time calling, no problem
removeHeaders(enPars); //second time calling, throws ConcurrentModificationException
...
}
, вызывающий этот метод:
@VisibleForTesting
void removeHeaders(final List<P> pars) {
pars.removeIf(p -> isTranslation(p));
for (final ListIterator<P> it = pars.listIterator(); it.hasNext(); ) {
if (isTitle(it.next())) {
it.remove();
if (it.hasNext()) {
it.next();
it.remove();
}
break;
}
}
}
Понятия не имею почему. Отладчик говорит мне, что во второй раз pars.listIterator () не может быть оценен / выдает исключение ConcurrentModificationException.
Я искал несколько часов, чтобы это исправить. Может быть, кто-то может помочь!
С уважением,
Барт