Java 9 Stream API Enhancements: takeWhile dan Lainnya
Streams diperkenalkan dalam Java untuk membantu pengembang melakukan operasi agregat dari urutan objek. Dengan Java 9, beberapa metode tambahan ditambahkan untuk membuat streams lebih baik.
takeWhile(Predicate Interface)
Sintaks
default Stream<T> takeWhile(Predicate<? super T> predicate)
Metode takeWhile mengambil semua nilai sampai predicate mengembalikan false. Ini mengembalikan, dalam hal stream terurut, stream yang terdiri dari awalan terpanjang elemen yang diambil dari stream ini yang cocok dengan predicate yang diberikan.
Contoh
import java.util.stream.Stream; public class Tester { public static void main(String[] args) { Stream.of("a","b","c","","e","f").takeWhile(s->!s.isEmpty()) .forEach(System.out::print); } } Output
Metode takeWhile mengambil semua nilai a, b, dan c, lalu ketika string kosong, berhenti mengeksekusi.
abc
dropWhile(Predicate Interface)
Sintaks
default Stream<T> dropWhile(Predicate<? super T> predicate)
Metode dropWhile membuang semua nilai di awal sampai predicate mengembalikan true. Ini mengembalikan, dalam hal stream terurut, stream yang terdiri dari elemen yang tersisa dari stream ini setelah membuang awalan terpanjang elemen yang cocok dengan predicate yang diberikan.
Contoh
import java.util.stream.Stream; public class Tester { public static void main(String[] args) { Stream.of("a","b","c","","e","f").dropWhile(s-> !s.isEmpty()) .forEach(System.out::print); System.out.println(); Stream.of("a","b","c","","e","","f").dropWhile(s-> !s.isEmpty()) .forEach(System.out::print); } } Output
Metode dropWhile membuang nilai a, b, dan c, lalu ketika string kosong, mengambil semua nilai.
ef ef
iterate
Sintaks
static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)
Metode iterate sekarang memiliki predicate hasNext sebagai parameter yang menghentikan loop setelah predicate hasNext mengembalikan false.
Contoh
import java.util.stream.IntStream; public class Tester { public static void main(String[] args) { IntStream.iterate(3, x -> x < 10, x -> x+ 3).forEach(System.out::println); } } Output
3 6 9
ofNullable
Sintaks
static <T> Stream<T> ofNullable(T t)
Metode ofNullable diperkenalkan untuk mencegah NullPointerExceptions dan untuk menghindari pengecekan null untuk streams. Metode ini mengembalikan Stream sekuensial yang berisi satu elemen, jika non-null, sebaliknya mengembalikan Stream kosong.
Contoh
import java.util.stream.Stream; public class Tester { public static void main(String[] args) { long count = Stream.ofNullable(100).count(); System.out.println(count); count = Stream.ofNullable(null).count(); System.out.println(count); } } Output
1 0