【问题标题】:Create array of incremental int using Stream instead of for loop使用 Stream 而不是 for 循环创建增量 int 数组
【发布时间】:2015-12-25 17:10:32
【问题描述】:

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

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

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 吗?

【问题讨论】:

    标签: java arrays java-8 java-stream


    【解决方案1】:

    如果你找到轻代码,那么你可以使用这个

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

    【讨论】:

      【解决方案2】:

      你可以用IntStream这样尝试,

      int[] array = new int[length];
      IntStream.range(0, length).forEach(i -> array[i] = i + 1);
      

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

      【讨论】:

        【解决方案3】:

        已经有一个内置的方法:

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

        IntStream.range 从开始(包括)到结束(不包括)以 1 的增量步长返回顺序有序的 IntStream

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

        【讨论】:

          猜你喜欢
          • 2020-07-29
          • 2021-09-24
          • 2018-12-22
          • 1970-01-01
          • 2020-11-12
          • 2017-05-26
          • 2019-07-03
          • 2017-07-30
          • 1970-01-01
          相关资源
          最近更新 更多