jho*_*ges 211
旧问题,新答案(适用于Java 8)
IntStream.range(0, 10).forEach(
n -> {
System.out.println(n);
}
);
Run Code Online (Sandbox Code Playgroud)
或方法参考:
IntStream.range(0, 10).forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)
Sim*_*ele 25
Guava还提供类似Python的东西range
:
Range.closed(1, 5).asSet(DiscreteDomains.integers());
Run Code Online (Sandbox Code Playgroud)
你也可以使用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;
}
};
Run Code Online (Sandbox Code Playgroud)
jie*_*eng 16
自Guava 15.0起,Range.asSet()已被弃用,并计划在版本16中删除.请改用以下内容:
ContiguousSet.create(Range.closed(1, 5), DiscreteDomain.integers());
Run Code Online (Sandbox Code Playgroud)
Kei*_*thS 15
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;
}
Run Code Online (Sandbox Code Playgroud)
原谅任何语法或样式错误; 我通常用C#编程.
Ami*_*hum 15
我正在开发一个名为Jools的小型Java utils库,它包含一个Range
提供所需功能的类(有一个可下载的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]
Run Code Online (Sandbox Code Playgroud)
您可以使用以下代码段来获取整数范围:
Set<Integer> iset = IntStream.rangeClosed(1, 5).boxed().collect
(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
(很长的回答只是说"不")
归档时间: |
|
查看次数: |
74801 次 |
最近记录: |