Предоставление условия 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
, потому что я не знаю, сколько может быть чисел Фибоначчи.
Есть ли способ сделать это с помощью лямбда-выражений?