package de.skuzzle.polly.tools.iterators; import java.util.Iterator; import java.util.NoSuchElementException; public class Interval implements Iterable<Integer> { public static Interval inclusive(int start, int end) { return new Interval(start, end + 1); } public static Interval exclusive(int start, int end) { return new Interval(start + 1, end); } public static Interval get(int end) { return new Interval(0, end); } public static Interval get(int start, int end) { return new Interval(start, end); } private int start; private int end; private Interval(int start, int end) { this.start = start; this.end = end; } @Override public Iterator<Integer> iterator() { return new ItClass(this.start, this.end); } private static class ItClass implements Iterator<Integer> { private int max; private int current; public ItClass(int min, int max) { if (max < min) { throw new IllegalArgumentException("max < min: " + max + "<" + min); } this.max = max; this.current = min; } @Override public boolean hasNext() { return this.current < this.max; } @Override public Integer next() { if (!this.hasNext()) { throw new NoSuchElementException(); } return this.current++; } @Override public void remove() { throw new UnsupportedOperationException("remove"); } } }