Java 9 - Peningkatan API Stream

Streams diperkenalkan di Java untuk membantu developer melakukan operasi agregat dari serangkaian objek. Dengan Java 9, beberapa metode lagi ditambahkan untuk membuat streaming lebih baik.

takeWhile (Antarmuka Predikat)

Sintaksis

default Stream<T> takeWhile(Predicate<? super T> predicate)

Metode takeWhile mengambil semua nilai sampai predikat mengembalikan false. Ia mengembalikan, dalam kasus aliran terurut, aliran yang terdiri dari awalan terpanjang elemen yang diambil dari aliran ini cocok dengan predikat 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);		 
   } 
}

Keluaran

Metode takeWhile mengambil semua nilai a, b, dan c, lalu setelah string kosong, ia berhenti dijalankan.

abc

dropWhile (Antarmuka Predikat)

Sintaksis

default Stream<T> dropWhile(Predicate<? super T> predicate)

dropWhile metode membuang semua nilai di awal sampai predikat mengembalikan true. Ini mengembalikan, dalam kasus aliran terurut, aliran yang terdiri dari elemen yang tersisa dari aliran ini setelah menjatuhkan awalan terpanjang dari elemen yang cocok dengan predikat 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);
   } 
}

Keluaran

dropWhile metode menjatuhkan nilai a, b dan c, kemudian string kosong, itu mengambil semua nilai.

ef
ef

pengulangan

Sintaksis

static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)

metode iterate sekarang memiliki predikat hasNext sebagai parameter yang menghentikan loop setelah predikat 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);
   } 
}

Keluaran

3
6
9

ofNullable

Sintaksis

static <T> Stream<T> ofNullable(T t)

Metode ofNullable diperkenalkan untuk mencegah NullPointerExceptions dan untuk menghindari pemeriksaan null untuk streaming. Metode ini mengembalikan Stream berurutan yang berisi elemen tunggal, jika bukan nol, jika tidak, 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);
   } 
}

Keluaran

1
0