我想做这样的事情:
int[] seq = new int[N];
for (int i = 0 ; i < N ; i++) {
seq[i] = i;
}
...在一行中,我想知道是否可以使用lambda表达式。
如果它与ArrayList<Integer>
一起使用,那对我来说没问题。
答案 0 :(得分:28)
使用IntStream.range()
:
int[] seq = IntStream.range(0, N).toArray();
或IntStream.rangeClosed()
如果您想加入N
:
int[] seq = IntStream.rangeClosed(0, N).toArray();
答案 1 :(得分:13)
从 Java 9 开始,您可以使用三参数IntStream.iterate
:
int[] seq = IntStream.iterate(0, x -> x < N, x -> x + 1).toArray();
其中:
IntStream.iterate(int seed, IntPredicate hasNext, IntUnaryOperator next):
seed
- 初始元素; hasNext
- 应用于元素以确定流必须终止的谓词; next
- 要应用于前一个元素以生成新元素的函数。答案 2 :(得分:2)
BitSet也会这样做。虽然没有lambda。
BitSet bset = new BitSet(N); // Initial capacity for N bits.
bset.set(0, N); // Set a range to true for 0 upto N-1.