0Pricing
Java Academy · Pelajaran

Kesalahan Umum

Hindari kesalahan yang sering terjadi pada Stream: menggunakan kembali stream, efek samping tersembunyi, serta paralel + status yang dapat diubah.

Kesalahan Umum adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 3 pelajaran total.

Pendahuluan

Aliran sangat kuat, tetapi memiliki kelemahan: menggunakan kembali Stream, efek samping tersembunyi, serta mencampur pemrosesan paralel dengan keadaan yang dapat diubah.

Aliran sekali pakai

Stream bersifat sekali pakai: setelah operasi terminal (forEach, collect, reduce), Stream tidak dapat digunakan lagi.

Kode: kesalahan penggunaan ulang

Setelah operasi terminal, Stream telah digunakan; upaya untuk menggunakannya kembali akan memunculkan IllegalStateException.

import java.util.*;import java.util.stream.*;public class Main {
  public static void main(String[] args) {
    List<Integer> nums = Arrays.asList(1, 2, 3);
    Stream<Integer> s = nums.stream();
    s.forEach(System.out::println); // terminal
    try {
      s.forEach(System.out::println); // reuse -> IllegalStateException
    } catch (IllegalStateException e) {
      System.out.println("Oops: " + e.getMessage());
    }
  }
}

Efek samping

Hindari efek samping di dalam map/filter (seperti mengubah daftar eksternal). Lebih baik gunakan fungsi murni dan collect() di akhir.

Kode: efek samping vs collect

Mengubah keadaan di dalam alur pemrosesan rentan menimbulkan masalah. Versi collect() lebih jelas dan aman.

import java.util.*;import java.util.stream.*;public class Main {
  public static void main(String[] args) {
    List<Integer> nums = Arrays.asList(1,2,3);
    // Pitfall: mutating external list from map/forEach
    List<Integer> out = new ArrayList<>();
    nums.stream().map(n -> { out.add(n*n); return n*n; }).forEach(x -> {});
    System.out.println("With side effects: " + out);

    // Better: use collect to build the result
    List<Integer> squares = nums.stream().map(n -> n*n).collect(Collectors.toList());
    System.out.println("With collect: " + squares);
  }
}

Kode: paralel + keadaan yang dapat diubah

Aliran paralel + wadah yang dapat diubah dapat menyebabkan kondisi balapan. Lebih baik gunakan collect() karena menangani konkurensi.

import java.util.*;public class Main {
  public static void main(String[] args) {
    List<Integer> nums = java.util.Arrays.asList(1,2,3,4,5);
    // Pitfall: adding to a normal ArrayList from parallel pipeline (unsafe)
    List<Integer> unsafe = new ArrayList<>();
    nums.parallelStream().forEach(n -> unsafe.add(n)); // may be unsafe
    System.out.println("Parallel add to ArrayList (unsafe demo): " + unsafe);

    // Safer: use built-in collectors
    List<Integer> safe = nums.parallelStream().map(n -> n).collect(java.util.stream.Collectors.toList());
    System.out.println("Collected safely: " + safe);
  }
}

Pemeriksaan kelemahan

Pemeriksaan singkat: Manakah yang merupakan kelemahan Stream yang umum bagi pemula?

Ringkasan

Ringkasan: 1) Stream hanya dapat digunakan sekali. 2) Hindari efek samping dalam alur pemrosesan. 3) Jangan mencampur aliran paralel dengan keadaan yang dapat diubah secara tidak aman.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Kesalahan Umum” gratis?

Ya — teks lengkap “Kesalahan Umum” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 3 pelajaran total.

Apa yang akan aku pelajari di “Kesalahan Umum”?

Hindari kesalahan yang sering terjadi pada Stream: menggunakan kembali stream, efek samping tersembunyi, serta paralel + status yang dapat diubah. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Java Academy?

Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 3.

Berapa lama pelajaran “Kesalahan Umum” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?

Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Pengurutan dan Evaluasi Hubung Singkat
  2. Dasar-Dasar Stream Paralel
  3. Kesalahan Umum
← Kembali ke Java Academy