Episode ini membahas kontrol alur dan struktur data dasar: if, else, dan switch expression modern, loop for, while, do-while, enhanced for, dan iterator, koleksi dasar array, ArrayList, LinkedList, Set, dan Map, serta pengenalan Stream API untuk iterasi koleksi.

Program yang berguna hampir selalu perlu mengambil keputusan dan mengulang pekerjaan. Episode 5 membahas kontrol alur dan struktur data dasar — dua pilar yang menggerakkan logika aplikasi. Kalian akan belajar percabangan, perulangan, koleksi, dan Stream API.
Menguasai topik ini berarti kalian bisa menulis program yang menanggapi kondisi berbeda dan memproses kumpulan data. Hampir semua kode produksi berputar di sekitar pola-pola ini, jadi jangan terburu-buru — pahami dengan baik.
if mengeksekusi blok ketika kondisi true, dan bisa dilanjutkan dengan else if serta else:
int nilai = 82;
if (nilai >= 90) {
System.out.println("Nilai A");
} else if (nilai >= 80) {
System.out.println("Nilai B");
} else {
System.out.println("Nilai C");
}Sejak Java 14, switch bisa dipakai sebagai expression yang menghasilkan nilai, tanpa keyword break:
String hari = "Sabtu";
String kategori = switch (hari) {
case "Sabtu", "Minggu" -> "Akhir pekan";
case "Senin" -> "Mulai minggu";
default -> "Hari biasa";
};
System.out.println(kategori);Switch expression memakai panah -> dan mendukung beberapa label sekaligus dengan tanda koma. Jauh lebih ringkas dan aman dibanding switch klasik.
for cocok untuk iterasi dengan jumlah yang diketahui, while untuk perulangan berbasis kondisi:
for (int i = 0; i < 5; i++) {
System.out.println("Iterasi " + i);
}
int counter = 0;
while (counter < 3) {
System.out.println("While " + counter);
counter++;
}do-while menjalankan blok minimal sekali sebelum memeriksa kondisi. Enhanced for (for-each) adalah cara paling umum untuk mengiterasi koleksi:
int n = 1;
do {
System.out.println(n);
n++;
} while (n <= 3);
int[] angka = {10, 20, 30};
for (int a : angka) {
System.out.println(a);
}Iterator memberi kontrol lebih atas koleksi, termasuk penghapusan elemen saat iterasi:
List<String> nama = new ArrayList<>(List.of("Andi", "Budi", "Citra"));
Iterator<String> it = nama.iterator();
while (it.hasNext()) {
String n = it.next();
System.out.println(n);
}Array berukuran tetap; ArrayList tumbuh dinamis. Untuk penyisipan dan penghapusan di tengah yang intensif, LinkedList lebih efisien:
int[] angka = new int[3];
angka[0] = 7;
List<String> daftar = new ArrayList<>();
daftar.add("Java");
daftar.add("JVM");
List<Integer> antrian = new LinkedList<>();
antrian.add(1);Set menyimpan elemen unik tanpa urutan; Map menyimpan pasangan key-value untuk pencarian cepat:
Set<String> kota = new HashSet<>();
kota.add("Jakarta");
kota.add("Bandung");
kota.add("Jakarta"); // duplikat diabaikan
Map<String, Integer> stok = new HashMap<>();
stok.put("Laptop", 12);
stok.put("Monitor", 30);
int jumlah = stok.get("Laptop");Koleksi ini adalah fondasi dari hampir semua struktur data yang akan kalian jumpai.
Stream API memperkenalkan pemrosesan koleksi secara deklaratif dan fungsional. Alih-alih menulis loop manual, kalian menyusun pipeline operasi:
List<Integer> angka = List.of(1, 2, 3, 4, 5, 6);
List<Integer> genap = angka.stream()
.filter(n -> n % 2 == 0)
.toList();
System.out.println(genap);angka.stream().filter(n -> n % 2 == 0) menghasilkan stream yang hanya berisi bilangan genap, lalu .toList() mengumpulkannya kembali menjadi list.
Stream mendukung berbagai operasi: filter untuk menyaring, map untuk mengubah, sorted untuk mengurutkan, dan collect untuk mengumpulkan hasil. Contoh menggabungkan beberapa operasi:
List<String> hasil = List.of("apel", "jeruk", "pisang", "anggur")
.stream()
.filter(buah -> buah.length() > 4)
.map(String::toUpperCase)
.sorted()
.toList();Stream API akan kembali muncul di banyak episode berikutnya, jadi pastikan kalian nyaman dengan pola ini.
Episode 5 membekali kalian kontrol alur dan struktur data: percabangan dengan if-else dan switch expression modern, perulangan for, while, do-while, enhanced for, dan iterator, koleksi array, List, Set, dan Map, serta pengenalan Stream API.
Inti yang harus dibawa pulang:
Di episode 6 selanjutnya kita akan membahas OOP dasar dan class design — konsep objek dan class, enkapsulasi dengan accessor dan mutator, inheritance, polymorphism, abstract class, serta interface modern dengan default method, static method, dan functional interface. Inilah inti paradigma pemrograman Java.