Ответ 1
Используйте IntStream.range()
:
int[] seq = IntStream.range(0,N).toArray();
или IntStream.rangeClosed()
, если вы хотите включить N
:
int[] seq = IntStream.rangeClosed(0,N).toArray();
Я хотел бы сделать что-то вроде:
int[] seq = new int[N];
for (int i = 0 ; i<N ;i++){
seq[i]=i;
}
в одной строке, и мне интересно, возможно ли это с помощью выражения лямбда.
Если он работает с ArrayList<Integer>
, это нормально для меня.
Используйте IntStream.range()
:
int[] seq = IntStream.range(0,N).toArray();
или IntStream.rangeClosed()
, если вы хотите включить N
:
int[] seq = IntStream.rangeClosed(0,N).toArray();
В 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
- функция, применяемая к предыдущему элементу для создания нового элемента.A BitSet тоже. Хотя тогда без лямбда.
BitSet bset = new BitSet(N); // Initial capacity for N bits.
bset.set(0, N); // Set a range to true for 0 upto N-1.