Apa yang Sebanding dengan Java?
Comparable di Java adalah sebuah objek untuk membandingkan dirinya dengan objek lain. Ini membantu untuk mengurutkan daftar objek khusus. Antarmuka java.lang.Comparable harus diimplementasikan oleh kelas untuk membandingkan instance-nya. Array objek yang mengimplementasikan antarmuka yang sebanding diurutkan secara otomatis menurut metode Arrays.sort dan Collections.sort.
Dalam tutorial Comparator vs Comparable in Java ini, Anda akan belajar:
- Apa yang Sebanding dengan Java?
- Apa itu Comparator di Java?
- Metode yang digunakan di Comparable:
- Metode yang digunakan di Comparator:
- Perbedaan antara Comparable vs Comparator di Jawa
- Praktik Terbaik Saat Menggunakan Pembanding dan Sebanding di Java
Apa itu Comparator di Java?
Pembanding di Java adalah objek untuk membandingkan objek yang berbeda dari kelas yang berbeda. Antarmuka pembanding di Java juga digunakan untuk mengatur objek kelas yang ditentukan pengguna. Ini mencakup dua metode antarmuka pembanding penting yang dikenal sebagai bandingkan (Object obj1, Object obj2) dan sama dengan (Object element).
PERBEDAAN UTAMA:
- Comparable menyediakan metode bandingkanTo () untuk mengurutkan elemen di Java sedangkan Comparator menyediakan metode bandingkan () untuk mengurutkan elemen di Java.
- Antarmuka yang sebanding hadir dalam paket java.lang sedangkan antarmuka Pembanding hadir dalam paket java.util.
- Comparable menyediakan urutan pengurutan tunggal sementara Pembanding menyediakan beberapa urutan pengurutan.
- Comparable memengaruhi kelas asli sedangkan pembanding tidak memengaruhi kelas asli.
Metode yang digunakan di Comparable:
Berikut ini adalah metode penting yang digunakan dalam antarmuka Comparable:
Dibandingkan dengan():
Metode CompareTo () digunakan untuk melakukan pengurutan alami pada string. Yang dimaksud dengan natural sorting adalah urutan sortir yang berlaku pada objek, misalnya urutan numerik untuk sortir bilangan bulat, urutan abjad untuk String, dll.
Sintaks metode CompareTo () adalah sebagai berikut:
int compareTo(T obj)
Dalam sintaks di atas, T menandakan jenis objek yang akan Anda bandingkan.
Metode CompareTo () membandingkan objek dengan T obj.
Keluaran:
- Ini mengembalikan 0 jika nilainya sama.
- Dalam kasus, jika objek memiliki nilai yang lebih rendah, maka metode ini mengembalikan nilai negatif.
- Jika objek memiliki nilai yang lebih tinggi, ia mengembalikan nilai positif.
Contoh Metode CompareTo ():
Contoh perbandingan program Java berikut menunjukkan perbandingan dua karakter, "a" dan "b". Karakter "a" muncul sebelum "b" menurut abjad.
Oleh karena itu, keluarannya adalah -1. Karakter "b" muncul setelah "a" menurut abjad. Oleh karena itu, keluarannya adalah 1. Karakter "a" dan "b" keduanya ekivalen. Oleh karena itu, keluarannya adalah 0.
public class Sample_String {public static void main(String[] args) {String str_Sample = "a";System.out.println("Compare To 'a' b is : " + str_Sample.compareTo("b"));str_Sample = "b";System.out.println("Compare To 'b' a is : " + str_Sample.compareTo("a"));str_Sample = "b";System.out.println("Compare To 'b' b is : " + str_Sample.compareTo("b"));}}
Keluaran
Compare To 'a' b is : -1Compare To 'b' a is : 1Compare To 'b' b is : 0
Metode yang digunakan di Comparator:
Berikut adalah metode penting yang digunakan dalam antarmuka pembanding:
Membandingkan():
Bandingkan () memungkinkan Anda untuk memesan objek. Untuk melakukan ini, Anda harus membuat kelas yang mengimplementasikan antarmuka pembanding. Setelah ini, Anda perlu mengganti metode perbandingannya.
Sintaks dari metode bandingkan () adalah sebagai berikut:
compare(Object obj1, Object obj2)
Dalam sintaks di atas, obj1 dan obj2 adalah dua objek yang harus Anda bandingkan menggunakan metode bandingkan ().
Keluaran:
- Ini mengembalikan bilangan bulat negatif jika argumen pertama kurang dari yang kedua.
- Mengembalikan nol jika argumen pertama dan argumen kedua sama.
- Metode ini dapat mengembalikan bilangan bulat positif, jika argumen pertama lebih besar dari yang kedua.
Anda harus memastikan bahwa relasinya bersifat transitif. Misalnya, ((bandingkan (a, b)> 0) && (bandingkan (b, c)> 0)) yang berarti bandingkan (a, c)> 0.
Bandingkan Contoh Metode:
Pada contoh program pembanding Java di bawah ini, ada 6 variabel. "x", "y", "p", "q", "r", dan "s". Outputnya adalah -1 karena nilai "x", 20 lebih kecil dari nilai "y", 30. Outputnya adalah 0 karena nilai "p", 40 sama dengan nilai "q", 40 .
import java.lang.Integer;public class example {public static void main(String args[]){int x = 20;int y = 30;// as 10 less than 20,// Output will be a value less than zeroSystem.out.println(Integer.compare(x, y));int p = 40;int q = 40;// as 30 equals 30,// Output will be zeroSystem.out.println(Integer.compare(p, q));int r = 20;int s = 7;// as 15 is greater than 8,// Output will be a value greater than zeroSystem.out.println(Integer.compare(r, s));}}
Keluaran:
-101
Sama dengan ():
Equals () memverifikasi apakah objek angka sama dengan objek, yang diberikan sebagai argumen atau tidak.
Sintaks dari metode equals () adalah sebagai berikut:
public boolean sama dengan (Objek o)
Metode ini membutuhkan dua parameter 1) objek apa pun 2) nilai pengembalian. Ini mengembalikan nilai true jika argumen yang diteruskan bukan null dan merupakan objek berjenis serupa yang memiliki nilai numerik yang sama.
Contoh Metode Sama Dengan:
Dalam contoh di bawah ini, kami membandingkan keempat variabel satu sama lain. Tiga variabel berjenis integer dan satu berjenis pendek. Hasil pertama salah karena nilai p, yaitu 5, tidak sama dengan nilai q, yaitu 20.
Hasil kedua benar karena nilai variabel p dan r sama yaitu 5. Terakhir, keluarannya salah, karena variabel p dan s memiliki nilai yang ditetapkan berbeda.
public class Test {public static void main(String args[]) {Integer p = 5;Integer q = 20;Integer r =5;Short s = 5;System.out.println(p.equals(q));System.out.println(p.equals(r));System.out.println(p.equals(s));}}
Keluaran
falsetruefalse
Perbedaan antara Comparable vs Comparator di Jawa
Berikut adalah perbedaan utama antara Java Comparable vs Comparator:
Sebanding | Pembanding |
Comparable menyediakan metode bandingkanTo () untuk mengurutkan elemen di Java. | Pembanding menyediakan metode bandingkan () untuk mengurutkan elemen di Java. |
Antarmuka yang sebanding hadir dalam paket java.lang. | Antarmuka pembanding hadir dalam paket java.util. |
Logika pengurutan harus berada dalam kelas yang sama yang objeknya akan Anda urutkan. | Logika pengurutan harus berada di kelas yang terpisah untuk menulis pengurutan yang berbeda berdasarkan atribut objek yang berbeda. |
Kelas yang objeknya ingin Anda urutkan harus mengimplementasikan antarmuka yang sebanding. | Class, yang objeknya ingin Anda urutkan, tidak perlu mengimplementasikan antarmuka pembanding. |
Ini menyediakan urutan penyortiran tunggal. | Ini menyediakan beberapa urutan penyortiran. |
Metode ini dapat mengurutkan data sesuai dengan urutan sortir yang wajar. | Metode ini mengurutkan data sesuai dengan urutan sortir yang disesuaikan. |
Itu mempengaruhi kelas aslinya. yaitu, kelas yang sebenarnya diubah. | Ini tidak mempengaruhi kelas asli, yaitu kelas sebenarnya tidak diubah. |
Sering diterapkan di API oleh: Kalender, kelas Wrapper, Tanggal, dan String. | Ini diimplementasikan untuk mengurutkan contoh kelas pihak ketiga. |
Semua kelas pembungkus dan kelas String mengimplementasikan antarmuka yang sebanding. | Kelas Komparator yang diimplementasikan hanya Collator dan RuleBasedColator. |
Praktik Terbaik Saat Menggunakan Pembanding dan Sebanding di Java
- Gunakan antarmuka yang sebanding jika perbandingannya standar untuk kelas tertentu.
- Anda dapat menggunakan lambda dengan pembanding.
- Banyak kelas inti yang tersedia dalam mengimplementasikan antarmuka yang sebanding.
- Dimungkinkan untuk menggunakan TreeSet dan TreeMap atau saat menyortir Set atau Map.
- Metode bandingkanTo () bekerja dengan pembanding dan juga dapat dibandingkan.
- Gunakan antarmuka pembanding hanya jika Anda
- Metode bandingkanTo () akan mengembalikan bilangan bulat positif jika objek pertama lebih besar dari yang lain, negatif jika lebih rendah, dan nol jika keduanya sama.