Comparable dan Comparator
Pelajari perbedaan Comparable dan Comparator untuk pengurutan khusus. Latih compareTo dan Comparator eksternal.
Comparable dan Comparator adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 3 pelajaran total.
Pendahuluan
Pengurutan memerlukan aturan. Antarmuka yang dapat dibandingkan dan komparator adalah dua cara untuk menentukannya:
- Antarmuka yang dapat dibandingkan: kelas mengimplementasikan compareTo.
- Komparator: objek terpisah yang diberikan ke sort().
Konsep perbandingan
Antarmuka yang dapat dibandingkan memungkinkan kelas menentukan urutan alaminya. Implementasikan compareTo agar Collections.sort mengetahui cara mengurutkan elemen.
Kode: antarmuka yang dapat dibandingkan
Di sini Person mengimplementasikan antarmuka yang dapat dibandingkan dan mengurutkan elemen berdasarkan usia. Inilah yang menentukan urutan alaminya.
public class Main {
static class Person implements Comparable<Person> {
String name;
int age;
Person(String n, int a) { name = n; age = a; }
public int compareTo(Person o) {
return this.age - o.age; // order by age
}
public String toString() { return name + "(" + age + ")"; }
}
public static void main(String[] args) {
java.util.List<Person> list = new java.util.ArrayList<>();
list.add(new Person("Ada",30));
list.add(new Person("Bob",25));
java.util.Collections.sort(list);
System.out.println(list); // [Bob(25), Ada(30)]
}
}
Konsep komparator
Komparator bersifat eksternal. Komparator dapat mengurutkan kelas yang sama dengan berbagai cara, misalnya berdasarkan nama, bukan usia.
Kode: komparator
Komparator ini mengurutkan berdasarkan nama. Komparator yang berbeda dapat digunakan kembali pada kelas yang sama.
public class Main {
static class Person {
String name; int age;
Person(String n,int a){ name=n; age=a; }
public String toString(){ return name+"("+age+")"; }
}
public static void main(String[] args) {
java.util.List<Person> list = new java.util.ArrayList<>();
list.add(new Person("Ada",30));
list.add(new Person("Bob",25));
java.util.Comparator<Person> byName = (p1,p2) -> p1.name.compareTo(p2.name);
java.util.Collections.sort(list, byName);
System.out.println(list); // [Ada(30), Bob(25)]
}
}
Kode: komparator terbalik
Komparator dapat menentukan aturan apa pun, misalnya urutan menurun seperti di sini.
public class Main {
public static void main(String[] args) {
java.util.List<Integer> nums = new java.util.ArrayList<>();
nums.add(5); nums.add(1); nums.add(3);
java.util.Comparator<Integer> desc = (a,b) -> b - a;
java.util.Collections.sort(nums, desc);
System.out.println(nums); // [5,3,1]
}
}
Pemeriksaan antarmuka yang dapat dibandingkan vs komparator
Pemeriksaan singkat: Apa perbedaan utama antara antarmuka yang dapat dibandingkan dan komparator?
Ringkasan
Ringkasan: Antarmuka yang dapat dibandingkan menentukan urutan alami di dalam kelas. Komparator bersifat terpisah dan dapat membuat banyak strategi pengurutan.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Comparable dan Comparator” gratis?
Ya — teks lengkap “Comparable dan Comparator” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 3 pelajaran total.
Apa yang akan aku pelajari di “Comparable dan Comparator”?
Pelajari perbedaan Comparable dan Comparator untuk pengurutan khusus. Latih compareTo dan Comparator eksternal. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Java Academy?
Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 3.
Berapa lama pelajaran “Comparable dan Comparator” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?
Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Map dan Penghitungan Frekuensi
- Comparable dan Comparator
- Pengurutan/Pencarian dengan Collections