Menu
CoddyTech

Ulasan: Pengurutan Kustom

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Java di Coddy. Pelajaran 46 dari 87.

challenge icon

Tantangan

Mudah

Mari kita buat pengelola koleksi buku yang menggabungkan semua yang sudah kamu pelajari tentang method khusus dan pengurutan. Kamu akan membuat class Book dengan toString(), equals(), hashCode() yang tepat, serta pengurutan alami melalui Comparable, ditambah comparator eksternal untuk pilihan pengurutan yang fleksibel.

Kamu akan mengatur kodemu dalam empat file:

  • Book.java: Buat class yang merepresentasikan sebuah buku dengan tiga field privat: title (String), author (String), dan year (int). Sertakan constructor dan getter untuk semua field.

    Class Book-mu harus mengimplementasikan Comparable<Book> dengan pengurutan alami berdasarkan year dalam urutan menaik (yang paling lama lebih dahulu).

    Override toString() agar mengembalikan: [title] by [author] ([year])

    Override equals() agar dua buku dianggap sama jika memiliki title DAN author yang sama. Override hashCode() menggunakan Objects.hash() dengan field yang sama.

  • TitleComparator.java: Buat comparator yang mengurutkan buku secara alfabetis berdasarkan judul dalam urutan menaik (A sampai Z).
  • AuthorComparator.java: Buat comparator yang mengurutkan buku secara alfabetis berdasarkan penulis dalam urutan menaik (A sampai Z).
  • Main.java: Satukan semuanya! Kamu akan menerima input untuk tiga buku, masing-masing pada baris terpisah dengan format: title,author,year

    Buat ArrayList berisi buku dan tunjukkan ketiga cara pengurutan berikut:

    1. Urutkan menggunakan urutan alami (berdasarkan tahun) lalu cetak setiap buku
    2. Cetak satu baris kosong
    3. Urutkan berdasarkan judul menggunakan TitleComparator lalu cetak setiap buku
    4. Cetak satu baris kosong
    5. Urutkan berdasarkan penulis menggunakan AuthorComparator lalu cetak setiap buku

Kamu akan menerima tiga baris input, masing-masing berisi data buku dengan format: title,author,year

Contoh: 1984,George Orwell,1949

Ingat untuk mengimpor java.util.Objects di Book.java, java.util.Comparator di file comparator-mu, serta java.util.ArrayList, java.util.Collections, dan java.util.Scanner di Main.java.

Coba sendiri

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Baca tiga buku dari input
        String line1 = scanner.nextLine();
        String line2 = scanner.nextLine();
        String line3 = scanner.nextLine();
        
        // TODO: Uraikan setiap baris untuk mengambil judul, penulis, dan tahun
        // Petunjuk: Gunakan split(",") untuk memisahkan nilainya
        
        // TODO: Buat object Book dari data yang telah diuraikan
        
        // TODO: Buat ArrayList dan tambahkan ketiga buku
        
        // TODO: Urutkan secara alami (berdasarkan tahun) dan cetak setiap buku
        
        // TODO: Cetak satu baris kosong
        
        // TODO: Urutkan berdasarkan judul menggunakan TitleComparator dan cetak setiap buku
        
        // TODO: Cetak satu baris kosong
        
        // TODO: Urutkan berdasarkan penulis menggunakan AuthorComparator dan cetak setiap buku
    }
}

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Java online