Witam, chciałbym napisać własny iterator który przyjmuje dwa parametry (lista, predykat) i filtruje zgodnie z predykatem.
W moim przypadku zwracać powinien liczby parzyste. Póki co napisałem tylko tyle i nie potrafię sobie poradzić z nullem
na końcu lub żeby nie wykroczyć poza listę.
public class MyIterator implements Iterator<Integer>{
private List<Integer> lista;
private Predicate<Integer> predicat;
private int index;
public MyIterator(List<Integer> lista, Predicate<Integer> predicat) {
this.lista = lista;
this.predicat = predicat;
}
@Override
public boolean hasNext() {
return index < lista.size();
}
@Override
public Integer next() {
if(predicat.test(lista.get(index))){
return lista.get(index++);
}
if(index == lista.size()-1){
index++;
return null;
}
index++;
return next();
}
}