2015-01-29 2 views
1
// iteratorFunc is Iterable[SomeClass] 
val iterator1 = iteratorFunc.iterator 

iterator1 foreach { 
    ... 
} 


val iterator2 = iteratorFunc.iterator 

iterator2 foreach { 
    ... 
} 

Код внутри iterator1 foreach успешно выполнен. Но, iterator2 дает пустой итератор.Как повторить итерацию с использованием метода итератора в scala

Пожалуйста, помогите.

+3

Каков тип 'iteratorFunc'? Вы говорите 'Iterable', но я подозреваю, что его метод' iterator' нарушен. Возможно ли, что 'iterator1 eq iterator2'? Потому что тогда, очевидно, есть ошибка. Итераторы потребляют только один раз. –

+0

@ 0__ вы должны написать ответ для него, я думаю, что это тоже ошибка 'iteratorFunc'. – cloud

ответ

5

Вы должны duplicate.

val (iterator1, iterator2) = iteratorFunc.iterator.duplicate 
-1

Ну, используя duplicate() супер дорого, потому что функция next() синхронизируется. Также вам нужно кэшировать разницу между этими двумя итераторами.

+0

Спасибо за редактирование, @iBug. –

Смежные вопросы