在Java中是否有办法做类似的事情:
int foo [] = new int [0..n];
即
foo [0] = 0
foo [3] = 3
答案 0 :(得分:3)
不使用内置语言功能。当然,你可以轻松编写一个方法来实现它,但是没有任何内置的东西 - 我怀疑它很少有用,它也不是很多第三方实用程序库(例如Guava)。
答案 1 :(得分:2)
我不这么认为,但你可以使用一个简单的for循环:
int foo[n];
for(int i = 0; i < n; i++) foo[i] = i;
如果你想要一个方法尝试这样的事情:
public void initialize(int[] array, int start, int end) {
int array_length = array.length;
if (end > array_length) end = array_length;
for (int i = start; i < end; i++) {
array[i - start] = i;
}
}
// In any other point in your code
int foo[] = new int[6];
initialize(foo, 0, 10);
另一种方法是使Range类添加此功能:
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
public class Range implements Iterable<Integer> {
Integer array[];
public Range(int size) {
this(0, size - 1);
}
public Range(int start, int end) {
array = new Integer[end - start];
for (int i = start; i < end; i++) {
array[i - start] = i;
}
}
public List<Integer> asList() {
return Arrays.asList(array);
}
@Override
public Iterator<Integer> iterator() {
return Arrays.asList(array).iterator();
}
}
以下是一个用法示例:
Range range = new Range(4, 10);
for (int i : range) {
System.out.println(i);
}
我确信这段代码可以改进,但不值得。
答案 2 :(得分:1)
int n = 10;
int[] arr = new int[n+1];
for
循环具有灵活的语法,因此您甚至可以这样做:
for ( int i = 0; i < arr.length; arr[i] = i++ );
P.S。
如果您想要的代码少于上述代码,则可以执行以下操作:
int i = 0;
for ( int c : arr ) { arr[i] = i++; }
P.P.S。
尽管这些代码片段简洁,但对我来说它们似乎不清楚,并且闻起来很糟糕。