Pengantar Streams

Input/Output dan Stream di Java

Alex Liu

Software Development Engineer

Bekerja dengan Streams

  • Java Streams

    • Memproses koleksi data secara fungsional dan meningkatkan kinerja untuk data besar
    • Koleksi yang didukung:
      • List (mis. ArrayList, LinkedList)
      • Set (mis. HashSet, TreeSet)
      • Map (Keys/Values sebagai Streams) (mis., HashMap, TreeMap)
      • Array (via Arrays.stream())
  • Contoh ArrayList bernama names untuk digunakan sepanjang video

    names: ["Alice", "Bob", "Charlie", "David"]
    
Input/Output dan Stream di Java

Menggunakan lambda dengan Stream

  • Ekspresi Lambda
    • Sintaks: (parameters) -> { expression }
names.forEach(
    // `name` adalah parameter yang merepresentasikan tiap elemen dalam list
    name -> 
        // Ekspresi yang dieksekusi untuk tiap elemen.
        System.out.println(name));
Alice 
Bob 
Charlie 
David
Input/Output dan Stream di Java

Membuat Stream

  • Ubah koleksi data menjadi Stream

    • Gunakan .stream() pada koleksi
    • Mendukung List, Set, dan Queue
  • Impor kelas Stream

    import java.util.stream.Stream;
    
  • Ubah list contoh names menjadi stream dan gunakan .foreach() untuk mengakses tiap elemen.
    Stream<String> stream = names.stream();
    stream.forEach(name -> System.out.println(name));
    
Input/Output dan Stream di Java

Menyaring data dengan Streams

  • Gunakan .filter() untuk memilih elemen
    • Hanya menyisakan elemen yang cocok
  • Ubah list contoh names menjadi stream
    Stream<String> stream = names.stream();
    
  • Gunakan .filter() untuk elemen yang diawali A dan .forEach() untuk mencetaknya
    stream
      .filter(name -> name.startsWith("A"))
      .forEach(name -> System.out.println(name));
    
  • Hasil filter: Alice
Input/Output dan Stream di Java

Menghitung elemen dengan Streams

  • Gunakan .count() untuk menghitung elemen

    • Mengembalikan nilai bertipe long
  • Ubah list contoh names menjadi stream

    Stream<String> stream = names.stream();
    
  • Gunakan .filter() untuk elemen yang diawali B dan .count() untuk menghitungnya

    long count = names.stream()
      .filter(name -> name.startsWith("B"))
      .count();
    
  • Hasil hitung: 1 (hanya 1 elemen Bob diawali B)

Input/Output dan Stream di Java

Kapan memakai Streams

  • Kapan memakai Streams:
    • Dataset besar: Mengurangi beban kinerja
    • Operasi fungsional: Lebih mudah dibaca daripada loop
    • Penyaringan dan transformasi: Menyederhanakan kode
  • Kapan TIDAK memakai Streams:
    • Untuk mengubah koleksi asli
    • Untuk loop sederhana dengan efek samping
Input/Output dan Stream di Java

Ayo berlatih!

Input/Output dan Stream di Java

Preparing Video For Download...