Java中有没有办法做类似的事情:
int foo[] = new int[0..n];
IE
富[0] = 0
富[3] = 3
Not using built-in language features. You can easily write a method to do it, of course, but there's nothing built-in - and I suspect that it's sufficiently rarely useful that it's not in many third party utility libraries (such as Guava) either.
I don't think so, but you could use a simple for-loop:
int foo[n];
for(int i = 0; i < n; i++) foo[i] = i;
And if you want a method try something like this:
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);
Another way would be to make a Range class to add this functionality:
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();
}
}
Here is an usage example:
Range range = new Range(4, 10);
for (int i : range) {
System.out.println(i);
}
I'm sure that this code can be improved but it isn't worth it.
int n = 10;
int[] arr = new int[n+1];
for
loops 具有灵活的语法,因此您甚至可以这样做:
for ( int i = 0; i < arr.length; arr[i] = i++ );
PS
如果你想要比上面更少的代码,你可以这样做:
int i = 0;
for ( int c : arr ) { arr[i] = i++; }
PPS
尽管这些代码片段很简洁,但对我来说它们似乎不清楚,而且闻起来很糟糕。