如何在范围内创建元素数组?

时间:2015-04-02 09:57:05

标签: java

Java中,有没有办法在范围内创建元素数组?

例如,

new int[] {1:10}, which should be equivalent to,
new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

我在想,如果我们需要创建一个大范围元素数组(5-1000),而不是像5,6,...,1000那样写,如果有像5:1000的方式。

5 个答案:

答案 0 :(得分:8)

在Java 8中

int[] array = IntStream.rangeClosed(1, 10).toArray();

答案 1 :(得分:1)

没有内置语言功能,但您可以轻松创建一个执行此功能的方法:

public static int[] createIntRangeArray(int start, int end) {
    int[] result = new int[end-start+1];
    for(int i = start; i <= end; i++)
        result[i-start] = i;
    return result;
}

然后:

createIntRangeArray(1, 10)
// is equivalent to
new int[] {1,2,3,4,5,6,7,8,9,10}

答案 2 :(得分:1)

class ArrayGenerator {
    public static int[] generateArray(int start, int end) {
        int[] array = new int[end-start+1];
        for(int i=start;i<=end;i++) {
            array[i-start] = i;
        }
        return array;
    }
}

//这可以像

一样使用
    int start = 5;
    int end = 10;
    int[] generatedArray = ArrayGenerator.generateArray(start,end);

    for(int i : generatedArray) {
        System.out.println(i);
    }

答案 3 :(得分:1)

考虑编写一个包含初始化数组的循环的单独方法。

public int[] createArrayWithRange(int startIncl, int endIncl) {
    int[] nums = new int[endIncl - startIncl + 1];
    for (int i = 0; i < (endIncl - startIncl + 1) ; i++) {
        nums[i] = i + startIncl;
    }
    return nums;
}

答案 4 :(得分:0)

我的主张:

public List<Integer> generateIntTab(int size){
        List<Integer> x = new ArrayList<Integer>();
        for(int i = 0 ; i < size; i++){
            x.add((i << 1)-i+1);
        }
        return x;
    }

它比标准JDK8函数慢一点,它给出了@Reimeus