Shortest way to get an Iterator over a range of Integers in Java

This implementation does not have a memory footprint.

/**
 * @param begin inclusive
 * @param end exclusive
 * @return list of integers from begin to end
 */
public static List<Integer> range(final int begin, final int end) {
    return new AbstractList<Integer>() {
            @Override
            public Integer get(int index) {
                return begin + index;
            }

            @Override
            public int size() {
                return end - begin;
            }
        };
}

Edit:

In Java 8 and later you can simply say:

IntStream.range(begin, end).iterator()          // returns PrimitiveIterator.OfInt

or if you need the boxed version:

IntStream.range(begin, end).boxed().iterator()  // returns Iterator<Integer>

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)