Напишите реализацию итератора, принимающего на вход другой итератор и предикат. Реализованный вами итератор должен отдавать только значения, удовлетворяющие предикату
Решение:
public class PredicateIterator<E> implements Iterator<E> {
private Iterator<E> it;
private Predicate<E> predicate;
private E current;
public PredicateIterator(Iterator<E> it, Predicate<E> predicate) {
this.it = it;
this.predicate = predicate;
this.current = null;
}
@Override
public boolean hasNext() {
if (current != null) return true;
while (it.hasNext()) {
current = it.next();
if (predicate.test(current)) return true;
}
current = null;
return false;
}
@Override
public E next() {
if (current == null && !hasNext()) throw new NoSuchElementException();
E next = current;
current = null;
return next;
}
}
Оформить в interview/algorithms/easy Условие:
Напишите реализацию итератора, принимающего на вход другой итератор и предикат. Реализованный вами итератор должен отдавать только значения, удовлетворяющие предикату
Решение: