Сгенерировать стрим последовательность чисел от 0 до n, и распечатать первые 20 которые деляться без остатка на 14

Я понимяю как это сделать с помощью цикла, но не совсем понял как использовать Stream.


Ответы (1 шт):

Автор решения: Alexandr

Как-то так:

package com.somepackage;

import java.util.Arrays;
import java.util.stream.IntStream;

public class Main {

    public static void main(String[] args) {
        int n = 1000;
        int[] result =
                IntStream.range(0, n)
                        .filter(i -> i % 14 == 0)
                        .limit(20)
                        .toArray();
        System.out.println(Arrays.toString(result));
    }

}

Результат:

[0, 14, 28, 42, 56, 70, 84, 98, 112, 126, 140, 154, 168, 182, 196, 210, 224, 238, 252, 266]

В случае, если необходимо использовать бесконечную последовательность и вывести только первые 14, то код будет таким:

package com.somepackage;

import java.util.Arrays;
import java.util.stream.IntStream;

public class Main {

    public static void main(String[] args) {
        int[] result =
                IntStream.iterate(0, i -> i + 1)
                        .filter(i -> i % 14 == 0)
                        .limit(14)
                        .toArray();
        System.out.println(Arrays.toString(result));
    }

}
→ Ссылка