创建前n个整数的Java数组而不进行显式循环的任何快捷方式? 在R中,它将是
intArray = c(1:n)
(结果向量为1,2,...,n)。
答案 0 :(得分:15)
如果您正在使用java-8,则可以执行以下操作:
int[] arr = IntStream.range(1, n).toArray();
这将创建一个包含[0, n)
整数的数组。如果要在结果数组中包含n
,可以使用rangeClosed
。
如果您想指定一个步骤,您可以iterate
然后limit
来获取您想要的第一个n
元素。
int[] arr = IntStream.iterate(0, i ->i + 2).limit(10).toArray(); //[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
否则我想最简单的方法是使用循环并填充数组。如果需要,可以创建辅助方法。
static int[] fillArray(int from, int to, int step){
if(to < from || step <= 0)
throw new IllegalArgumentException("to < from or step <= 0");
int[] array = new int[(to-from)/step+1];
for(int i = 0; i < array.length; i++){
array[i] = from;
from += step;
}
return array;
}
...
int[] arr3 = fillArray(0, 10, 3); //[0, 3, 6, 9]
您可以根据自己的需要调整此方法,从上限到下限,并采用否定步骤。