Grenzbedingung für Stream-Generierung bereitstellen [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Begrenzen Sie einen Stream durch ein Prädikat 18 Antworten

Ich 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?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage