Lompati ke konten utama
Modul 7 · Pelajaran 2 dari 214/14 dalam kursus~15 min
Pelajaran modul (2/2)

Aliran API

Stream API di Java memungkinkan Anda memproses kumpulan objek dengan cara deklaratif, memanfaatkan pemrograman fungsional. Aliran tidak menyimpan data, namun membawa elemen dari sumber (seperti daftar atau larik) melalui alur operasi.

Pipa aliran terdiri dari tiga bagian:

  1. Sumber (misalnya, list.stream())
  2. Tidak ada atau lebih operasi perantara (yang mengembalikan Aliran baru, misalnya, filter, map)
  3. Operasi terminal (yang menghasilkan hasil akhir atau efek samping dan menutup Aliran, misalnya, collect, forEach, reduce)

Operasi Menengah Umum

Operasi perantara bersifat malas: operasi tersebut tidak dijalankan sampai operasi terminal dipanggil.

  • filter(Predicate): memfilter elemen berdasarkan kondisi boolean.
  • map(Function): mengubah setiap elemen menjadi objek lain dengan menerapkan fungsi.
  • sorted(): mengurutkan elemen Aliran.
Java
List<String> names = Arrays.asList("Marco", "Anna", "Giovanni");
List<String> filtered = names.stream()
                             .filter(name -> name.startsWith("M"))
                             .map(name -> name.toUpperCase())
                             .collect(Collectors.toList()); // "MARCO"

Operasi Terminal Umum

  • forEach(Consumer): melakukan tindakan untuk setiap elemen Aliran.
  • collect(Collector): mengumpulkan hasil Aliran ke dalam wadah (misalnya, daftar menggunakan Collectors.toList()).
  • reduce(identity, BinaryOperator): menggabungkan elemen Stream menjadi satu nilai kumulatif.
Java
List<Integer> numbers = Arrays.asList(1, 2, 3, 4);
int sum = numbers.stream()
                 .reduce(0, (a, b) -> a + b); // Sums all numbers: 10

Cobalah sendiri

Latihan#java.m7.l2.e1
Upaya: 0Memuat…

Lengkapi kode menggunakan aliran angka untuk memfilter hanya angka genap, kumpulkan ke dalam Daftar baru bernama genap, dan cetak menggunakan System.out.println.

Memuat editor…
Tunjukkan petunjuk

Mulailah dengan memanggil `numbers.stream()`, tambahkan `.filter(n -> n % 2 == 0)`, dan terakhir kumpulkan dengan `.collect(Collectors.toList())`.

Solusi tersedia setelah 3 upaya

Latihan#java.m7.l2.e2
Upaya: 0Memuat…

Gunakan aliran untuk mengubah semua nama di dalam daftar nama menjadi huruf besar menggunakan peta, dan mencetaknya satu per satu menggunakan forEach dengan referensi metode.

Memuat editor…
Tunjukkan petunjuk

Gunakan `.map(s -> s.toUpperCase())` diikuti dengan operasi terminal `.forEach(System.out::println)`.

Solusi tersedia setelah 3 upaya

Latihan#java.m7.l2.e3
Upaya: 0Memuat…

Lengkapi kode dengan menghitung jumlah semua angka dalam daftar angka menggunakan operasi Stream dan terminal pengurangan dengan nilai awal 0. Cetak jumlahnya.

Memuat editor…
Tunjukkan petunjuk

Gunakan `numbers.stream().reduce(0, (a, b) -> a + b)` dan cetak variabel yang dihasilkan.

Solusi tersedia setelah 3 upaya