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).

Меня осенило только после того, как я уже прокомментировал некоторые ответы в этой теме.

Спасибо всем, кто пытался помочь!

Другие вопросы по тегам