使用Stream而不是for循环创建增量int数组

时间:2015-09-28 12:44:31

标签: java arrays java-8 java-stream

我想创建一个构建增量数字数组的函数。

例如,我想获得类似的东西:

int[] array = new int[]{1, 2, 3, 4, 5, 6, 7, 8, ..., 1000000};

该函数将接收两个参数:起始编号(包括)和数组的最终长度:

public int[] buildIncrementalArray(int start, int length) { ... }

我知道如何使用for循环:

public int[] buildIncrementalArray(int start, int length) {
    int[] result = new int[length];
    for(int i = 0 ; i < length ; i++) {
        result[i] = start + i;
    }
    return result;
}

我想使用Java 8 Stream API,而不是使用for循环。有人知道如何使用Stream API吗?

3 个答案:

答案 0 :(得分:16)

已有一种内置方法:

int[] array = IntStream.range(start, start + length).toArray();

IntStream.range以递增步长1从开头(包括)返回到结尾(不包含)的顺序有序IntStream

如果要包含结束元素,可以使用IntStream.rangeClosed

答案 1 :(得分:0)

如果您找到简单的代码,则可以使用此代码

int[] myArray = new int[n];
while(n-- >= 0){
    myArray[n] = n+1;
}

答案 2 :(得分:-1)

您可以使用IntStream

尝试这种方式
int[] array = new int[length];
IntStream.range(0, length).forEach(i -> array[i] = i + 1);

如果它不适合你,请告诉我。