Rumah > Java > javaTutorial > Bagaimanakah Saya Boleh Mengehadkan Strim Java 8 Infinite Berdasarkan Predikat?

Bagaimanakah Saya Boleh Mengehadkan Strim Java 8 Infinite Berdasarkan Predikat?

Mary-Kate Olsen
Lepaskan: 2024-12-26 13:40:10
asal
551 orang telah melayarinya

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

Java 8: Melaksanakan Pengehadan Strim Berdasarkan Padanan Predikat

Java 8 tidak mempunyai operasi strim khusus yang mengehadkan aliran yang berpotensi tidak terhingga sehingga elemen gagal padan dengan predikat yang diberikan. Semasa Java 9 memperkenalkan operasi takeWhile untuk tujuan ini, pengguna Java 8 mencari strategi pelaksanaan alternatif.

Penyelesaian dalam Java 8

Untuk melaksanakan pengehadan aliran berasaskan predikat dalam Java 8, pendekatan berikut boleh digunakan:

  • Cipta Infinite Strim: Gunakan Stream.iterate atau Stream.generate untuk mencipta aliran nilai yang tidak terhingga.
  • Gunakan had dan operasi penapis: Gunakan operasi had dengan had sewenang-wenangnya (seperti Long.MAX_VALUE) untuk mengelakkan lelaran tak terhingga. Kemudian, gunakan penapis untuk menilai predikat bagi setiap elemen. Ini memastikan bahawa lelaran berterusan sehingga predikat gagal.

Contoh:

IntStream.iterate(1, n -> n + 1)
    .limit(Long.MAX_VALUE)
    .filter(n -> n < 10)
    .forEach(System.out::println);
Salin selepas log masuk

Java 9 and Beyond

Jika menggunakan Java 9 atau lebih baru, operasi takeWhile memudahkan proses pelaksanaan:

IntStream.iterate(1, n -> n + 1)
    .takeWhile(n -> n < 10)
    .forEach(System.out::println);
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengehadkan Strim Java 8 Infinite Berdasarkan Predikat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan