package org.quaere; import java.util.Iterator; public class CharacterRange implements Iterable<Character> { private final Character from; private final Character to; private final int inc; public CharacterRange(Character from, Character to) { this.from = from; this.to = to; inc=Comparer.compare(to,from); } public Iterator<Character> iterator() { return new Iterator<Character>() { private Character current = from; public boolean hasNext() { if (inc>0) return current<to+1; else return current>to-1; } public Character next() { if (!hasNext()) throw new ArrayIndexOutOfBoundsException(); if (inc>0) { return current++; } else { return current--; } } public void remove() { throw new UnsupportedOperationException("Cannot remove elements from a range."); } }; } }