Ulasan: Pengurutan Kustom
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Java di Coddy. Pelajaran 46 dari 87.
Tantangan
MudahMari 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), danyear(int). Sertakan constructor dan getter untuk semua field.Class Book-mu harus mengimplementasikan
Comparable<Book>dengan pengurutan alami berdasarkanyeardalam urutan menaik (yang paling lama lebih dahulu).Override
toString()agar mengembalikan:[title] by [author] ([year])Override
equals()agar dua buku dianggap sama jika memilikititleDANauthoryang sama. OverridehashCode()menggunakanObjects.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,yearBuat
ArrayListberisi buku dan tunjukkan ketiga cara pengurutan berikut:- Urutkan menggunakan urutan alami (berdasarkan tahun) lalu cetak setiap buku
- Cetak satu baris kosong
- Urutkan berdasarkan judul menggunakan
TitleComparatorlalu cetak setiap buku - Cetak satu baris kosong
- Urutkan berdasarkan penulis menggunakan
AuthorComparatorlalu 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
1Dasar-Dasar OOP
File EksternalPengantar OOPClass dan ObjectKata Kunci thisMethodField (Atribut)Method KonstruktorOverloading KonstruktorRangkuman: Kalkulator Sederhana4Pewarisan
Pewarisan Dasar (extends)Kata Kunci superMethod Overriding (@Override)Rantai KonstruktorKelas ObjectPewarisan Tunggal dan BertingkatMengapa Tidak Ada Pewarisan Multi-KelasRangkuman: Hierarki Karyawan7method Khusus & class Object
method toString()equals() dan hashCode()method clone()compareTo() dan ComparableAntarmuka ComparatorUlasan: Pengurutan Kustom10Penanganan Exception dalam OOP
Hierarki class ExceptionException KustomError Checked vs UncheckedPola Try-with-ResourcesRekap: Pengguna Tervalidasi2Modifier Akses & Enkapsulasi
Ikhtisar Tingkat AksesMethod Getter dan SetterPenyembunyian InformasiKata Kunci finalUlasan: Pengelola Rekening Bank5Polimorfisme
Dasar method overloadingMethod overriding (Saat program berjalan)Upcasting dan downcastingOperator instanceofclass dan method abstrakUlasan: Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi vs PewarisanAgregasi vs Komposisiinner, nested, dan anonymous classEnum dan method Enumrecord (Java 16+)sealed class (Java 17+)11Pola Desain Bagian 1
Pengantar Pola DesainPola SingletonPola FactoryPola BuilderPola ObserverPola Strategy3property class dan Anggota Statis
Variabel Instance vs Statismethod StatisBlok StatisKonstanta (static final)Rangkuman: Penghitung dan Utilitas6Antarmuka & Kelas Abstrak
Pengantar AntarmukaMengimplementasikan AntarmukaImplementasi Beberapa AntarmukaDefault & Static pada AntarmukaKelas Abstrak vs AntarmukaAntarmuka FungsionalRekap: Sistem PembayaranLatihan sendiri: Compiler Java online