Как создать int [] или Collection <Integer> со значением 0,1,2,..., N в одной строке на Java с использованием выражения лямбда? Я хотел бы сделать что-то вроде: int[] seq = new int[N]; for (int i = 0 ; i<N ;i++){ seq[i]=i; } в одной строке, и мне интересно, возможно ли это с помощью выражения лямбда. Если он работает с ArrayList<Integer>, это нормально для меня. Ответ 1 Используйте IntStream.range(): int[] seq = IntStream.range(0,N).toArray(); или IntStream.rangeClosed(), если вы хотите включить N: int[] seq = IntStream.rangeClosed(0,N).toArray(); Ответ 2 В 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 - функция, применяемая к предыдущему элементу для создания нового элемента. Ответ 3 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.
Ответ 1 Используйте IntStream.range(): int[] seq = IntStream.range(0,N).toArray(); или IntStream.rangeClosed(), если вы хотите включить N: int[] seq = IntStream.rangeClosed(0,N).toArray();
Ответ 2 В 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 - функция, применяемая к предыдущему элементу для создания нового элемента.
Ответ 3 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.