Transformasi data dengan Stream

Input/Output dan Stream di Java

Alex Liu

Software Development Engineer

Transformasi data dengan stream

  • Transformasi data dengan stream

    • Ubah format data, agregasikan dan filter informasi
    • Simpan hasil ke tipe koleksi baru (mis. dari List ke Set)
    • 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 sisa video

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

Menggunakan Stream untuk mentransformasi elemen

  • Persiapan: impor kelas yang diperlukan Set, Collectors, dan Stream
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;

// Convert the `ArrayList` we created earlier `names` to a `Stream` Stream<String> namesStream = names.stream();
  • Data saat ini: [Alice, Bob, Charlie, David]
Input/Output dan Stream di Java

Menggunakan Stream untuk mentransformasi elemen (lanjutan)

// Use `.map()` to convert each element to upper case
Stream<String> upperCaseNameStream = namesStream.map(
        name -> name.toUpperCase())
  • Data saat ini: [ALICE, BOB, CHARLIE, DAVID]
// use `.collect()` and `Collectors.toSet()` to store the transformed stream data
upperCaseNameStream.collect(Collectors.toSet())
  • Data akhir:
    {CHARLIE, ALICE, BOB, DAVID}
    
Input/Output dan Stream di Java

Menggunakan Stream untuk agregasi

  • Metode .reduce()

    • Mengagregasikan elemen menjadi satu hasil
    • Berguna untuk penjumlahan, penggabungan, atau mencari min/maks
  • Penggunaan .reduce() membutuhkan dua masukan

    • Nilai awal: nilai awal akumulasi, mis. 0
    • Binary Operator: fungsi dengan dua argumen
      • (x, y) -> x + y berarti:
        • x adalah total akumulasi
        • y adalah elemen saat ini yang diproses
        • Operasi menambahkan y ke x hingga semua elemen diproses
Input/Output dan Stream di Java

Menggunakan Stream untuk agregasi: Contoh

  • Ubah ArrayList names menjadi objek Stream.
    Stream<String> stream = names.stream();
    
  • Gunakan .map() untuk mengubah nama menjadi panjangnya dan .reduce() untuk menjumlahkannya
    stream
      .map(name -> name.length())
      .reduce(0, (sum, length) -> sum + length);
    
  • Hasil: 20
Input/Output dan Stream di Java

Ayo berlatih!

Input/Output dan Stream di Java

Preparing Video For Download...