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

后端 未结 7 1998
时光说笑
时光说笑 2020-12-29 22:27

What\'s the shortest way to get an Iterator over a range of Integers in Java? In other words, implement the following:

/** 
* Returns an Iterator over the in         


        
7条回答
  •  佛祖请我去吃肉
    2020-12-29 22:48

    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 range(final int begin, final int end) {
        return new AbstractList() {
                @Override
                public Integer get(int index) {
                    return begin + index;
                }
    
                @Override
                public int size() {
                    return end - begin;
                }
            };
    }
    

    Edit:

    In Java 8 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
    

提交回复
热议问题