Предоставление условия Limit для генерации потока [дубликата]

На этот вопрос уже есть ответ здесь:

Ограничить поток предикатом 18 ответов

Я пишу код для вычисления чисел Фибоначчи. С помощью этого кода я могу сгенерировать первые n чисел последовательности Фибоначчи.

Stream.generate(new Supplier<Long>() {
    private long n1 = 1;
    private long n2 = 2;

    @Override
    public Long get() {
        long fibonacci = n1;
        long n3 = n2 + n1;
        n1 = n2;
        n2 = n3;
        return fibonacci;
    }
}).limit(50).forEach(System.out::println);

Методlimit возвращаетStream который содержит количество элементов, переданных этому методу. Я хочу остановить поколениеStream после того, как число Фибоначчи достигло некоторого значения.

Я имею в виду, если я хочу перечислить все числа Фибоначчи меньше 1000, то я не могу использоватьlimit, потому что я не знаю, сколько может быть чисел Фибоначчи.

Есть ли способ сделать это с помощью лямбда-выражений?

Ответы на вопрос(4)

Ваш ответ на вопрос