Strim Java 8: Mengehadkan Mengikut Predikat
Dalam senario dengan aliran yang berpotensi tidak terhingga, kita sering menghadapi keperluan untuk mengehadkan strim sehingga yang pertama elemen gagal predikat tertentu. Java 9 memperkenalkan operasi takeWhile yang berguna, membolehkan fungsi ini dengan mudah.
Malangnya, Java 8 tidak mempunyai operasi sedemikian. Oleh itu, kita mesti meneroka pendekatan alternatif untuk mencapai tingkah laku ini.
Melaksanakan takeWhile in Java 8
Untuk melaksanakan takeWhile dalam Java 8, kita boleh memanfaatkan strategi berikut:
Di bawah ialah contoh pelaksanaan:
import java.util.Iterator; import java.util.stream.Stream; public class StreamTakeWhile { public static <T> Stream<T> takeWhile(Stream<T> stream, java.util.function.Predicate<T> predicate) { Iterator<T> iterator = stream.iterator(); return Stream.generate(() -> { if (iterator.hasNext() && predicate.test(iterator.next())) { return iterator.next(); } return null; }); } public static void main(String[] args) { StreamTakeWhile.takeWhile(Stream.iterate(1, n -> n + 1), n -> n < 10) .forEach(System.out::println); } }
Menggunakan Java 9 takeWhile
Dengan Java 9, anda boleh terus menggunakan operasi takeWhile seperti yang ditunjukkan di bawah:
IntStream .iterate(1, n -> n + 1) .takeWhile(n -> n < 10) .forEach(System.out::println);
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Setara Java 8 dengan `takeWhile` Java 9 untuk Strim?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!