Stream

Sekarang kita sudah melihat bagaimana lambda dan method reference boleh meringkaskan anonymous class tetapi bagaimana syntax tersebut boleh membantu mengurangkan bilangan code kita sedangkan kita jarang menggunakan anonymous class? Jawapannya ialah Stream.

Dalam aplikasi bisnes yang tipikal, proses yang dijalankan kebanyakannya sama sahaja. Cari senarai data, jumlahkan data. Cari senarai data, update setiap data. Cari senarai data, tapis data. Disebabkan proses-proses tersebut selalu digunakan, takkanlah kita perlu menulis loop selalu? Jadi, Java memperkenalkan Stream.

Dalam Java 8, setiap collection telah implement interface Stream. Untuk menggunakan Stream, kita boleh memanggil method .stream() daripada collection tersebut. Contohnya,

List<Integer> numbers = Arrays.asList(25, 100, 50, 10, 8);
Stream<Integer> stream = numbers.stream();

Tetapi kita jarang menggunakan seperti di atas kerana method-method dalam interface Stream boleh berangkai. Biasanya kita akan menulis proses-proses tersebut secara berangkai.

Ini contoh untuk menambah 10 untuk setiap nombor dalam numbers,

import java.util.Arrays;
import java.util.List;

import static java.util.stream.Collectors.toList;

public class Application {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(25, 100, 50, 10, 8);
        List<Integer> selepasTambahSepuluh = numbers.stream()
                .map(x -> x + 10)
                .collect(toList());

        System.out.println(selepasTambahSepuluh);
    }
}

Saya menggunakan import static di atas untuk mengurangkan code di dalam main.

Perhatikan code di atas, kita ada menggunakan lambda iaitu,

x -> x + 10

dalam method .map(). Stream mengandungi method-method yang akan menjalankan code lambda untuk setiap data dalam collection. Jadi, kita tidak perlu lagi menulis loop.

Dalam bab ini, kita akan melihat method-method yang selalu digunakan seperti map() kemudian kita akan melihat bagaimana method-method tersebut boleh digunakan bersama untuk menyelesaikan sesuatu masalah.

Website ini menggunakan cookie yang dikendalikan oleh pihak ketiga. Anda boleh membaca dengan lebih lanjut di sini. Dengan menggunakan website ini, anda bersetuju dengan penggunaan cookie tersebut.

Setuju