NoSuchElementException в цикле фильтра
Пишу тестовое задание, представляющее из себя простой сервис заметок. Это мое первое знакомство с такого рода приложениями.
Сначала хоть как-то работало, но после того, как начал разбираться перестало работать при любом заданном фильтре. Кидает ошибку NoSuchElementException. Дебаггер показывает, что это происходит на третьем заходе в цикл.
Iterable<Entry> entries = entryRepo.findAll();
if (filter != null && !filter.isEmpty()) {
Iterator<Entry> itr = entries.iterator();
while (itr.hasNext()){
boolean first = !itr.next().getTitle().contains(filter);
boolean second = !itr.next().getContent().contains(filter);
if (first && second) {
itr.remove();
}
}
}
Как исправить? Или подскажите вариант получше
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Проверка itr.hasNext() у вас на следующий элемент (т.е. для first), а внутри вы два раза запрашиваете элементы (itr.next()), т.е. думаю на втором next элементов больше нет.
Как вариант, добавьте отлов того исключения, например так:
Iterable<Entry> entries = entryRepo.findAll();
if (filter != null && !filter.isEmpty()) {
Iterator<Entry> itr = entries.iterator();
while (true) {
try {
boolean first = !itr.next().getTitle().contains(filter);
boolean second = !itr.next().getContent().contains(filter);
if (first && second) {
itr.remove();
}
} catch (NoSuchElementException) {
break;
}
}
}