package com.annimon.stream.iterator;
import java.util.Iterator;
/**
* Iterator wrapper that supports indexing.
*
* @param <T> the type of the iterator elements
* @since 1.1.6
*/
public class IndexedIterator<T> implements Iterator<T> {
private final Iterator<? extends T> iterator;
private final int step;
private int index;
public IndexedIterator(Iterator<? extends T> iterator) {
this(0, 1, iterator);
}
public IndexedIterator(int start, int step, Iterator<? extends T> iterator) {
this.iterator = iterator;
this.step = step;
index = start;
}
public int getIndex() {
return index;
}
@Override
public boolean hasNext() {
return iterator.hasNext();
}
@Override
public T next() {
final T result = iterator.next();
index += step;
return result;
}
@Override
public void remove() {
iterator.remove();
}
}