package org.gbif.checklistbank.iterable;
import java.util.Iterator;
import com.google.common.base.Preconditions;
/**
* Utils class to provider an iterable integer range usable in for each statements.
*/
public class Ints implements Iterable<Integer> {
private int start;
private int end;
/**
* Provides an int iterable starting with 1
* @param end inclusive end
*/
public static Iterable<Integer> until(int end) {
return new Ints(1, end);
}
/**
* @param start inclusive start
* @param end inclusive end
*/
public static Iterable<Integer> range(int start, int end) {
return new Ints(start, end);
}
private Ints(int start, int end) {
Preconditions.checkArgument(start <= end);
this.start = start;
this.end = end;
}
@Override
public Iterator<Integer> iterator() {
return new Iterator<Integer>() {
private int actual = start;
@Override
public boolean hasNext() {
return actual <= end;
}
@Override
public Integer next() {
return actual++;
}
@Override
public void remove() {
// do nothing
}
};
}
}