如何使用lambda表达式在Java中的一行中创建值为0,1,2,...,N的int []或Collection <Integer>?

Eli*_*tte 11 java lambda

我想做这样的事情:

int[] seq = new int[N];
for (int i = 0 ; i < N ; i++) {
    seq[i] = i;
}
Run Code Online (Sandbox Code Playgroud)

...在一行中,我想知道lambda表达式是否可行.

如果它适用ArrayList<Integer>,对我来说没问题.

Era*_*ran 28

用途IntStream.range():

int[] seq = IntStream.range(0, N).toArray();
Run Code Online (Sandbox Code Playgroud)

或者IntStream.rangeClosed()如果你想包括N:

int[] seq = IntStream.rangeClosed(0, N).toArray();
Run Code Online (Sandbox Code Playgroud)


Ole*_*hov 13

Java 9开始,您可以使用三参数IntStream.iterate:

int[] seq = IntStream.iterate(0, x -> x < N, x -> x + 1).toArray();
Run Code Online (Sandbox Code Playgroud)

哪里:

IntStream.iterate?(int seed, IntPredicate hasNext, IntUnaryOperator next):

  • seed - 最初的元素;
  • hasNext - 应用于元素的谓词,以确定流何时必须终止;
  • next - 要应用于前一个元素以生成新元素的函数.