Java:相当于Python的范围(int,int)?

Java是否具有Python的range(int, int)方法的等价物?

番石榴还提供类似于Python的range

 Range.closed(1, 5).asSet(DiscreteDomains.integers()); 

你也可以实现一个相当简单的迭代器来使用Guava的AbstractIterator来完成同样的事情:

 return new AbstractIterator<Integer>() { int next = getStart(); @Override protected Integer computeNext() { if (isBeyondEnd(next)) { return endOfData(); } Integer result = next; next = next + getStep(); return result; } }; 

老问题,新答案(对于Java 8)

  IntStream.range(0, 10).forEach( n -> { System.out.println(n); } ); 

或方法参考:

 IntStream.range(0, 10).forEach(System.out::println); 

自Guava 15.0以来, Range.asSet()已被弃用,并计划在版本16中删除。请改为使用以下内容:

 ContiguousSet.create(Range.closed(1, 5), DiscreteDomain.integers()); 
 public int[] range(int start, int stop) { int[] result = new int[stop-start]; for(int i=0;i<stop-start;i++) result[i] = start+i; return result; } 

原谅任何语法或样式错误; 我通常用C#编程。

我正在研究一个名为Jools的小Java工具库,它包含一个Range类,它提供了您需要的function(有一个可下载的JAR)。
构造函数是Range(int stop)Range(int start, int stop)Range(int start, int stop, int step) (类似于for循环),您可以遍历它,或者你可以使用它的toList()方法显式地获取范围列表。

 for (int i : new Range(10)) {...} // i = 0,1,2,3,4,5,6,7,8,9 for (int i : new Range(4,10)) {...} // i = 4,5,6,7,8,9 for (int i : new Range(0,10,2)) {...} // i = 0,2,4,6,8 Range range = new Range(0,10,2); range.toList(); // [0,2,4,6,8] 
 public int[] range(int start, int length) { int[] range = new int[length - start + 1]; for (int i = start; i <= length; i++) { range[i - start] = i; } return range; } 

(长答案只是说“不”)

您可以使用下面的代码片段来获取一组范围的整数:

  Set<Integer> iset = IntStream.rangeClosed(1, 5).boxed().collect (Collectors.toSet()); 

Groovy的漂亮的Range类可以从Java中使用,尽pipe它当然不是常规的。

“Functional Java”库允许以有限的程度进行编程,它有一个创buildfj.data.Array实例的range()方法。

看到:

同样的“完全懒”库提供了一个懒惰的范围方法: http : //code.google.com/p/totallylazy/

如果你的意思是像在Python循环中那样使用它,那么Java会很好地与for语句循环,这就使得这个结构不需要这个结构。