package php.runtime.lang;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
public class NullSkipIterator<T> implements Iterator<T> {
protected final List<T> list;
protected final ListIterator<T> iterator;
public NullSkipIterator(List<T> list) {
this.list = list;
this.iterator = list.listIterator();
}
@Override
public boolean hasNext() {
int offset = 0;
while (iterator.hasNext()){
offset++;
if (iterator.next() == null){
} else
break;
}
for(int i = 0; i < offset; i++)
iterator.previous();
return offset > 0;
}
@Override
public T next() {
T o = null;
while (iterator.hasNext()){
o = iterator.next();
if (o != null)
return o;
}
return o;
}
@Override
public void remove() {
iterator.remove();
}
}