Java: для каждого цикла пропускается последний элемент коллекции
Я столкнулся с явлением, с которым я не сталкивался раньше при отладке нашего кода.
По сути, кажется, что Java пропускает последний элемент коллекции во время каждого цикла.
Цикл выглядит примерно так:
for (ReportRow contentRow : rows) {
if (contentRow instanceof Data1Row) {
doSomething1();
}
if (contentRow instanceof GrossAmmountRow) {
doSomething2();
}
if (contentRow instanceof TotalAmountRow) {
doSomething3();
}
if (contentRow instanceof FinalRow) {
return null;
}
}
Теперь коллекция "строк" состоит из нескольких элементов, каждый из которых наследует родительский класс "ReportRow" (Data1Row, GrossAmountRow, TotalAmountRow, FinalRow).
Проблема в том, что последний элемент коллекции пропускается при каждом выполнении цикла. Я уже несколько раз отлаживал метод, чтобы проверить, содержит ли коллекция элемент, но элемент присутствует постоянно - он только пропускается.
Мой поиск в Google не дал мне удовлетворительных результатов, поэтому я решил открыть тему здесь.
Кто-нибудь сталкивался с чем-то подобным раньше? Или есть идея, что может вызвать эту проблему? Я действительно в растерянности здесь.
Некоторая помощь будет очень оценена!
Заранее спасибо.
2 ответа
if (contentRow instanceof FinalRow) {
return null;
}
Если у вас есть два FinalRow
или что-то еще после FinalRow
Объект, он будет "пропущен", потому что метод останавливается после первой встречи.
Я решил проблему.
"Проблема" заключалась в том, что я не заметил, что здесь использовался подсписок, и его размер был меньше исходного списка (всего на 1).
Меня осенило только после того, как я уже прокомментировал некоторые ответы в этой теме.
Спасибо всем, кто пытался помочь!