IObjectTest - это интерфейс с метод одиночного логического теста (Object o)
FilteringIterator - это реализация Iterator, которая инициализирован другим итератором и экземпляр IObjectTest: новый FilteringIterator (myIterator, myTest). Ваш FilteringIterator будет затем разрешите итерацию 'myIterator', но пропуская любые объекты, которые не проходят Тест 'myTest'.
Поскольку операция hasNext фактически включает в себя повторное перемещение базового итератора пока не дойдете до следующего совпадающего элемента. Вопрос в том, как переместить итератор назад, поскольку hasNext не должен перемещать базовый итератор.