Skip to main content

Apa itu Java Stream?

Java Stream diperkenalkan pertama kali di Java versi 8 atau 1.8. Java Stream adalah alur elemen yang mendukung operasi fungsional seperti filtering, mapping, dan looping. Java Stream bukan struktur data — tidak menyimpan apa pun — tetapi beroperasi pada data dari collection, array, atau input I/O.

java stream

source: https://logicmojo.com/java8-feature-questions

📚 Konsep Stream Pipeline

Konsep Stream Pipeline adalah penghubung antar operasi/operation. Operasi pada Stream pipeline terbagi menjadi dua kategori:

1. Intermediate Operations 2. Terminal Operations

Setiap Intermediate Operations akan mengembalikan nilai Stream lagi. Akibatnya, kita dapat membuat pipeline pemrosesan dengan jumlah Intermediate Operations secara bebas untuk memproses data.

Stream kemudian harus dihentikan menggunakan Terminal Operations yang mengembalikan nilai akhir.

stream intermediate operation dan steam terminal operation

source: https://logicmojo.com/java8-feature-questions

1️⃣ Java Stream Intermediate Operations

Intermediate operations bersifat lazy operations yang berfungsi:

  1. Mengubah atau memfilter elemen dalam aliran
  2. Tidak dapat menghasilkan hasil akhir sampai Terminal Operation dipanggil
  3. Dapat dirantai untuk membangun alur stream pipeline

Method Intermediate Operation yang sering digunakan

  • filter()
  • map()
  • flatMap()
  • distinct()
  • sorted()
  • peek()
  • limit()
  • skip()
  • takeWhile() (Java 9+)
  • dropWhile() (Java 9+)

2️⃣ Java Stream Terminal Operations

Terminal Operations adalah final step dalam stream pipeline, yang bersifat:

  • Menghasilkan result (collection, number, boolean, dll.)
  • Akan melakukan Trigger stream execution
  • Akan melakukan Consume terhadap stream (stream tidak dapat digunakan kembali)

Method Terminal Operation yang sering digunakan

OperationsDescriptionReturn Type
forEach()Menerapkan tindakan pada setiap itemvoid
toArray()Konversi elemen stream ke arrayT[]
collect()Menerapkan elemen ke Collection/map/stringR(varies)
reduce()Melakukan reduksi pada elemen menggunakan operator binerOptional<T> or <T>
min()Nilai minimum dari comparatorOptional<T>
max()Nilai maximal dari comparatorOptional<T>
count()Jumlah elementlong
anyMatch()Mengembalikan true jika ada elemen cocok dengan predicate yang diberikanboolean
allMatch()Mengembalikan true jika semua elemen cocok dengan predicate yang diberikanboolean
noneMatch()Mengembalikan true jika tidak ada elemen cocok dengan predicate yang diberikanboolean
findFirst()Mengembalikan elemen pertama (jika ada)Optional<T>
findAny()Mengembalikan elemen apapunOptional<T>

Sifat Java Stream

Secara default, Stream itu bersifat Cold, artinya data di Stream tidak akan mengalir sampai kita memintanya. Ada banyak cara untuk meminta Stream mulai mengalirkan datanya, dengan menggunakan Stream Operations. Stream hanya bisa jalan sekali, mirip seperti aliran data, setelah mengalir, aliran data tidak bisa diulang lagi dari awal.

🌐 Baca Juga