2015-10-22 6 views
-1

Я пытаюсь выполнить итерацию с использованием итератора, но я продолжаю получать IndexOutofBound Exception. Это мой код.Exception java.lang.IndexOutOfBoundsException: Index: 1, Size: 1

Iterator rows = myList.get("Table"); 
while(rows.hasNext()) 
{ 
Row row = (Row)rows.next(); 
//do something with row 
} 

Точная линия Я получаю исключение это 'строка строка = (строка) rows.next();'. Из исключения я предполагаю, что в строках больше нет данных, и, следовательно, rows.next() приводит к исключению. Но если это так, не следует ли rows.hasNext() возвращать false? Как это rows.hasNext() возвращает true, но rows.next() приводит к исключению? Что мне не хватает?

+2

Можете ли вы показать [полный пример] (HTTP: //stackoverflow.com/help/mcve), который воспроизводит поведение? – assylias

+0

Возможно, подсказка, если вы используете многопоточность, может исключить некоторые ошибки ... –

+0

Да, я использую многопоточность. Может ли это вызвать какие-либо проблемы? –

ответ

0

Образец выглядит okey ... Является ли Iterater вашей собственной реализацией «Итерабельной»? Тогда это может быть неправильным состоянием в методе «hasNext» ...

Если это собственная реализация - вы должны также изменить его на:

Iterator<Row> 
Смежные вопросы