package ru.job4j.iteration;

import java.util.Iterator;
import java.util.NoSuchElementException;

/**
 * Класс для преобразования итератора итераторов целых чисел в итератор целых чисел.
 * @author vkovrov
 * @version 0.1
 * @since 0.1
 */
public class IteratorOfIterators {

    /**
     * Метод для преобразования итератора итераторов целых чисел в итератор целых чисел.
     * @param it итератор итераторов целых чисел.
     * @return итератор целых чисел.
     */
    public Iterator<Integer> convert(Iterator<Iterator<Integer>> it) {
        return new Iterator<Integer>() {

            /**
             * Поле для итератора итераторов.
             */
            private Iterator<Iterator<Integer>> aIt = it;

            /**
             * Поле для указателя на текущий элемент в итераторе итераторов.
             */
            private Iterator<Integer> currentIterator = aIt.next();

            /**
             * Поле для указателя поиска элемента в методе hasNext.
             */
            private Iterator<Integer> fakeIterator = aIt.next();

            /**
             * Метод для определения наличия следующего элемента.
             * @return есть ли следующий элемент.
             */
            @Override
            public boolean hasNext() {
                if (!fakeIterator.hasNext()) {
                    fakeIterator = aIt.next();
                }
                boolean result = fakeIterator.hasNext();
                fakeIterator = currentIterator;
                return result;
            }

            /**
             * Метод для возвращения следующего элемента.
             * @return следующий элемент.
             */
            @Override
            public Integer next() {
                if (!hasNext()) {
                    throw new NoSuchElementException();
                }
                return currentIterator.next();
            }
        };
    }
}

@@ -893,174 +893,8 @@
 );%0A%0A
-            /**%0A             * %D0%9F%D0%BE%D0%BB%D0%B5 %D0%B4%D0%BB%D1%8F %D1%83%D0%BA%D0%B0%D0%B7%D0%B0%D1%82%D0%B5%D0%BB%D1%8F %D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B0 %D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%B0 %D0%B2 %D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D0%B5 hasNext.%0A             */%0A            private Iterator%3CInteger%3E fakeIterator = aIt.next();%0A%0A
     
@@ -1118,17 +1118,22 @@
     
-if (!fake
+return current
 Iter
@@ -1150,211 +1150,32 @@
 xt()
-) %7B%0A                    fakeIterator = aIt.next();%0A                %7D%0A                boolean result = fakeIterator.hasNext();%0A                fakeIterator = currentIterator;%0A                return result
+ %7C%7C aIt.next().hasNext()
 ;%0A  

fix task - 5.1.4. Создать convert(Iterator<Iterator>) [#152]