Grenzbedingung für Stream-Generierung bereitstellen [duplizieren]
Diese Frage hat hier bereits eine Antwort:
Begrenzen Sie einen Stream durch ein Prädikat 18 AntwortenIch schreibe einen Code, um Fibonacci-Zahlen zu berechnen. Mit diesem Code kann ich die ersten n Zahlen der Fibonacci-Sequenz erzeugen.
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);
Die Methodelimit
gibt das zurückStream
Dies enthält die Anzahl der Elemente, die an diese Methode übergeben wurden. Ich möchte die Generation der aufhaltenStream
nachdem die Fibonacci-Zahl einen gewissen Wert erreicht hatte.
Ich meine, wenn ich alle Fibonacci-Nummern unter 1000 auflisten möchte, kann ich sie nicht verwendenlimit
, weil ich nicht weiß, wie viele Fibonacci-Zahlen es geben könnte.
Gibt es eine Möglichkeit, dies mit Lambda-Ausdrücken zu tun?