package com.android.smap.utils; import java.util.Iterator; import com.google.common.collect.AbstractIterator; /** * * Simple Iterable to loop through a range of integers * * eg. Print numbers 1 to 10 * * for (int n : IntRange.between(1, 10)) { * System.out.println(n); * } * * @author christopheratkins * */ public class IntRange implements Iterable<Integer> { private final int startValue; private final int finalValue; public static IntRange between(int from, int to) { return new IntRange(from, to); } private IntRange(int startValue, int finalValue) { this.startValue = startValue; this.finalValue = finalValue; if (startValue > finalValue) { throw new IllegalArgumentException("Starting value must be smaller than final value"); } } @Override public Iterator<Integer> iterator() { return new AbstractIterator<Integer>() { private int current = startValue; private int end = finalValue; @Override protected Integer computeNext() { if (current <= end) { int ret = current; ++current; return ret; } return endOfData(); } }; } }