在 Java 中获取一系列整数的迭代器的最短方法

新手上路,请多包涵

在 Java 中的整数范围内获取迭代器的最短方法是什么?换句话说,执行以下操作:

 /**
* Returns an Iterator over the integers from first to first+count.
*/
Iterator<Integer> iterator(Integer first, Integer count);

就像是

(first..first+count).iterator()

原文由 cretzel 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 334
2 个回答

直接执行作业:

 List<Integer> ints = new ArrayList<Integer>();
for (int i = 0; i < count; i++) {
    ints.add(first + i);
}

原文由 Bombe 发布,翻译遵循 CC BY-SA 2.5 许可协议

此实现没有内存占用。

 /**
 * @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;
            }
        };
}

编辑:

在 Java 8 及更高版本中,您可以简单地说:

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

或者如果您需要盒装版本:

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

原文由 Saintali 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题