0

Java中有没有办法做类似的事情:

int foo[] = new int[0..n];

IE

富[0] = 0

富[3] = 3

4

3 回答 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.

于 2012-10-18T22:36:14.980 回答
2

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.

于 2012-10-18T22:36:44.930 回答
1
int n = 10;
int[] arr = new int[n+1];

forloops 具有灵活的语法,因此您甚至可以这样做:

for ( int i = 0; i < arr.length; arr[i] = i++ );

PS
如果你想要比上面更少的代码,你可以这样做:

int i = 0;
for ( int c : arr ) { arr[i] = i++; }

PPS
尽管这些代码片段很简洁,但对我来说它们似乎不清楚,而且闻起来很糟糕。

于 2012-10-18T22:41:24.253 回答