import java.util.Iterator;
import java.util.AbstractList;
import java.util.NoSuchElementException;
class Range extends AbstractList<Integer> {
int start;
public Range() { this(0); }
public Range(int start) { this(start, null); }
public Range
(int start,
Integer end
) {
this.start = start;
this.end = end;
}
if (end != null && start + i >= end)
return start + i;
}
public int size() {
if (end == null)
return Integer.
MAX_VALUE; //no Integer.Infinity available
return end - start;
}
@Override
if (end == null)
return "["+start+",∞)";
return "["+start+","+end+")";
}
public static void main
(String[] args
) {
//test finite range
for (int r1 : new Range(0, 25))
//test infinite range
for (int r2 : new Range(100)) {
if (r2 == 150) break; //we don’t want this to really run forever, no?
}
//test finite range’s exception
new Range(0, 4).get(5);
}
}