ReverseListIterator.java
package org.codefilarete.tool.collection;
import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
/**
* @author Guillaume Mary
*/
public class ReverseListIterator<E> implements Iterator<E> {
private final List<E> iterable;
private int currentIndex;
public ReverseListIterator(List<E> iterable) {
this.iterable = iterable;
this.currentIndex = iterable.size();
}
@Override
public boolean hasNext() {
return currentIndex > 0;
}
@Override
public E next() {
if (!hasNext()) {
// this is necessary to be compliant with Iterator#next(..) contract
throw new NoSuchElementException();
}
return iterable.get(--currentIndex);
}
@Override
public void remove() {
iterable.remove(currentIndex);
}
}