Praktik Mandiri 5: Java Collections Framework

Tugas 1: Memahami List

Tujuan: Memahami implementasi List (ArrayList, LinkedList).

  1. Buat program untuk menyimpan daftar nama mahasiswa.
    • Gunakan ArrayList untuk menambahkan, menghapus, dan mencari nama.
    • Bandingkan dengan LinkedList untuk operasi tambah/hapus di awal dan akhir list.
  2. Implementasikan sorting menggunakan Collections.sort() dengan:
    • Natural ordering (Comparable).
    • Custom comparator (misalnya: urutkan berdasarkan panjang nama).

Contoh output:

Tugas 2: Eksplorasi Set

Tujuan: Memahami perbedaan HashSetLinkedHashSet, dan TreeSet.

  1. Buat program untuk menyimpan angka unik secara acak (1-100) dengan ketiga jenis Set.
  2. Tampilkan isi setiap Set untuk melihat perbedaan urutan penyimpanan.
  3. Tambahkan logika untuk mengecek duplikasi sebelum menambahkan elemen.

Contoh output:

Tugas 3: Implementasi Map

Tujuan: Memahami penggunaan HashMapLinkedHashMap, dan TreeMap.

  1. Buat buku telepon sederhana yang menyimpan nama dan nomor telepon.
    • Gunakan HashMap untuk pencarian cepat.
    • Gunakan TreeMap untuk menampilkan kontak secara terurut berdasarkan nama.
  2. Implementasikan fitur pencarian nomor telepon berdasarkan nama.

Contoh output:

Tugas 4: Queue dan Deque

Tujuan: Memahami antrian dengan PriorityQueue dan ArrayDeque.

  1. Simulasikan antrian tiket menggunakan PriorityQueue (prioritas berdasarkan nomor tiket VIP).
  2. Gunakan ArrayDeque untuk membuat:
    • Antrian FIFO (tambah di akhir, ambil dari depan).
    • Stack (tambah dan ambil dari depan).

Contoh output:

Tugas 5: Comparable dan Comparator

Tujuan: Memahami perbedaan Comparable dan Comparator.

  1. Buat kelas Buku dengan atribut judul dan tahunTerbit.
  2. Implementasikan Comparable untuk mengurutkan buku berdasarkan tahun terbit.
  3. Buat Comparator untuk mengurutkan berdasarkan judul.
  4. Urutkan list buku menggunakan kedua pendekatan tersebut.

Contoh output:

Tugas 6: Gabungan Collections

Tujuan: Mengintegrasikan beberapa koleksi.

  1. Buat sistem perpustakaan sederhana:
    • Map<String, List<Buku>> untuk menyimpan buku yang dipinjam oleh anggota.
    • Gunakan Set untuk menyimpan kategori buku unik.
  2. Tambahkan fitur:
    • Peminjaman buku (tambah ke list anggota).
    • Pengembalian buku (hapus dari list anggota).
    • Tampilkan semua kategori buku yang tersedia.

Tugas 7: Streams + Collections

Tujuan: Memanfaatkan Java Streams dengan Collections.

  1. Dari list transaksi (objek dengan produk dan harga):
    • Filter transaksi dengan harga > 1.000.000.
    • Kelompokkan transaksi berdasarkan produk menggunakan Collectors.groupingBy().
    • Hitung total harga per produk.

Contoh output:

Tugas 8: Mini Project

Tujuan: Mengaplikasikan semua konsep. Buat sistem inventaris toko:

  • Gunakan Map untuk menyimpan stok barang (kode barang → objek Barang).
  • Gunakan PriorityQueue untuk mengelola daftar barang yang perlu restok (stok < 5).
  • Gunakan Set untuk menyimpan kategori barang.
  • Fitur:
    • Tambah/update barang.
    • Cari barang berdasarkan kategori.
    • Tampilkan barang yang perlu restok.

Persyaratan Umum:

  • Gunakan generics untuk type safety.
  • Manfaatkan method dasar seperti add()remove()contains()iterator(), dll.
  • Handle exception jika diperlukan (misalnya: menghapus elemen yang tidak ada).

Tips:

  • Pelajari JavaDoc untuk memahami method yang tersedia di setiap koleksi.
  • Bandingkan performa antar koleksi menggunakan System.nanoTime().
  • Cari studi kasus nyata penggunaan koleksi di proyek open-source.

Jika ada kesulitan, jelajahi dokumentasi resmi Java atau praktikkan contoh kecil sebelum mengerjakan tugas besar. Selamat belajar! 😊