Heim > Java > javaLernprogramm > Wie kann ich einen unendlichen Java 8-Stream basierend auf einem Prädikat begrenzen?

Wie kann ich einen unendlichen Java 8-Stream basierend auf einem Prädikat begrenzen?

Mary-Kate Olsen
Freigeben: 2024-12-26 13:40:10
Original
616 Leute haben es durchsucht

How Can I Limit an Infinite Java 8 Stream Based on a Predicate?

Java 8: Stream-Begrenzung basierend auf Prädikatsübereinstimmung implementieren

In Java 8 fehlt eine spezifische Stream-Operation, die einen potenziell unendlichen Stream bis zu einem Element begrenzt stimmt nicht mit einem bestimmten Prädikat überein. Während Java 9 zu diesem Zweck die takeWhile-Operation einführt, suchen Java 8-Benutzer nach alternativen Implementierungsstrategien.

Lösung in Java 8

Um prädikatbasierte Stream-Begrenzung in Java zu implementieren 8 kann der folgende Ansatz verwendet werden:

  • Erstellen Sie ein Unendliches Stream: Verwenden Sie Stream.iterate oder Stream.generate, um einen unendlichen Strom von Werten zu erstellen.
  • Verwenden Sie Limit- und Filteroperationen: Wenden Sie die Limit-Operation mit einem beliebigen Limit an (z. B Long.MAX_VALUE), um eine unendliche Iteration zu vermeiden. Verwenden Sie dann einen Filter, um das Prädikat für jedes Element auszuwerten. Dadurch wird sichergestellt, dass die Iteration fortgesetzt wird, bis das Prädikat fehlschlägt.

Beispiel:

IntStream.iterate(1, n -> n + 1)
    .limit(Long.MAX_VALUE)
    .filter(n -> n < 10)
    .forEach(System.out::println);
Nach dem Login kopieren

Java 9 und höher

Bei Verwendung von Java 9 oder höher vereinfacht die takeWhile-Operation die Implementierung:

IntStream.iterate(1, n -> n + 1)
    .takeWhile(n -> n < 10)
    .forEach(System.out::println);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich einen unendlichen Java 8-Stream basierend auf einem Prädikat begrenzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage