Menyusun Program · Pelajaran 8 dari 10

ArrayList dan generics

9 menit baca · BelajarCode

Array Java berukuran tetap. ArrayList adalah array dinamis yang bisa bertambah dan berkurang, mirip list di Python.

Java
1import java.util.ArrayList;2import java.util.Collections;34public class Main {5    public static void main(String[] args) {6        ArrayList<String> matkul = new ArrayList<>();7        matkul.add("Algoritma");8        matkul.add("Basis Data");9        matkul.add("Jaringan Komputer");10        matkul.add(1, "Matematika Diskrit");11        matkul.remove("Jaringan Komputer");1213        System.out.println(matkul);14        System.out.println("Banyak: " + matkul.size() + ", pertama: " + matkul.get(0));15        System.out.println("Ada Basis Data? " + matkul.contains("Basis Data"));1617        Collections.sort(matkul);18        for (String m : matkul) {19            System.out.println("- " + m);20        }21    }22}
Keluaran
[Algoritma, Matematika Diskrit, Basis Data]
Banyak: 3, pertama: Algoritma
Ada Basis Data? true
- Algoritma
- Basis Data
- Matematika Diskrit

Generics

Tanda <String> pada ArrayList<String> adalah generics: ArrayList ini hanya boleh berisi String. Kompiler menolak matkul.add(123), sehingga kesalahan tipe tertangkap sebelum program berjalan.

Generics tidak bisa memakai tipe primitif. Untuk bilangan, pakai kelas pembungkusnya: Integer untuk int dan Double untuk double. Java mengubahnya bolak-balik secara otomatis, yang disebut autoboxing.

Java
1import java.util.ArrayList;23public class Main {4    public static void main(String[] args) {5        ArrayList<Integer> nilai = new ArrayList<>();6        for (int n : new int[]{78, 92, 65, 88}) {7            nilai.add(n);8        }9        int total = 0;10        for (int n : nilai) {11            total += n;12        }13        System.out.println("Nilai: " + nilai + ", rata-rata: " + (double) total / nilai.size());14    }15}
Keluaran
Nilai: [78, 92, 65, 88], rata-rata: 80.75

Mengurutkan objek dengan Comparator

Java
1import java.util.ArrayList;2import java.util.Comparator;34class Mahasiswa {5    String nama;6    double ipk;78    Mahasiswa(String nama, double ipk) {9        this.nama = nama;10        this.ipk = ipk;11    }12}1314public class Main {15    public static void main(String[] args) {16        ArrayList<Mahasiswa> kelas = new ArrayList<>();17        kelas.add(new Mahasiswa("Bagas", 3.42));18        kelas.add(new Mahasiswa("Sinta", 3.88));19        kelas.add(new Mahasiswa("Dewi", 3.88));20        kelas.add(new Mahasiswa("Fajar", 3.61));2122        kelas.sort(Comparator.comparingDouble((Mahasiswa m) -> m.ipk).reversed()23                .thenComparing(m -> m.nama));24        for (Mahasiswa m : kelas) {25            System.out.println(m.nama + " " + m.ipk);26        }27    }28}
Keluaran
Dewi 3.88
Sinta 3.88
Fajar 3.61
Bagas 3.42

m -> m.ipk adalah ekspresi lambda, fungsi kecil tanpa nama. Comparator di atas mengurutkan IPK dari besar ke kecil, lalu nama dari A ke Z jika IPK-nya sama.

HashMap

Java
1import java.util.HashMap;2import java.util.Map;3import java.util.TreeMap;45public class Main {6    public static void main(String[] args) {7        String[] hadir = {"Andi", "Bela", "Andi", "Citra", "Andi", "Bela"};8        Map<String, Integer> hitung = new HashMap<>();9        for (String nama : hadir) {10            hitung.put(nama, hitung.getOrDefault(nama, 0) + 1);11        }12        System.out.println(new TreeMap<>(hitung));13    }14}
Keluaran
{Andi=3, Bela=2, Citra=1}

HashMap adalah hash table, seperti dictionary di Python. Urutan isinya tidak terjamin, jadi untuk ditampilkan urut abjad, isinya disalin ke TreeMap.

Cek pemahaman

Kenapa ArrayList<int> tidak bisa dipakai di Java?

Latihan

Rekap mata kuliah

Buat ArrayList berisi pasangan nama mata kuliah dan SKS (pakai kelas kecil MataKuliah). Hitung total SKS dan tampilkan mata kuliah dengan SKS terbesar.

Jalankan contoh kode di pelajaran ini tanpa instalasi lewat compiler Java online.

Tandai pelajaran ini selesai

Masuk ke aplikasi untuk mencatat kemajuan, lalu lanjutkan ke pelajaran berikutnya dari perangkat mana pun.

Buka di aplikasi