【发布时间】:2014-03-06 04:29:58
【问题描述】:
我正在编写一个代码来计算斐波那契数。使用此代码,我可以生成斐波那契数列的前 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,因为我不知道可能有多少斐波那契数。
有没有办法使用 lambda 表达式来做到这一点?
【问题讨论】:
标签: java lambda java-8 java-stream