Apa yang Sebanding di Jawa?
Sebanding di Java adalah objek untuk membandingkan dirinya dengan objek lain. Ia membantu menyusun senarai objek tersuai. Antara muka java.lang.Banding harus dilaksanakan oleh kelas untuk membandingkan keadaannya. Array objek yang melaksanakan antara muka setanding disusun secara automatik dengan kaedah Arrays.sort dan Collections.sort
Dalam tutorial Comparator vs Comparable in Java ini, anda akan belajar:
- Apa yang Sebanding di Jawa?
- Apa itu Perbandingan di Jawa?
- Kaedah yang digunakan dalam perbandingan:
- Kaedah yang digunakan dalam Perbandingan:
- Perbezaan antara Comparable vs Comparator di Java
- Amalan Terbaik Semasa Menggunakan Pembanding dan Sebanding di Java
Apa itu Perbandingan di Jawa?
Perbandingan di Java adalah objek untuk membandingkan objek yang berbeza dari kelas yang berbeza. Antara muka perbandingan di Java juga digunakan untuk mengatur objek kelas yang ditentukan pengguna. Ia merangkumi dua kaedah antara muka pembanding penting yang dikenali sebagai membandingkan (Objek obj1, Objek obj2) dan sama (elemen Objek).
PERBEZAAN UTAMA:
- Comparable menyediakan kaedah membandingkanTo () untuk menyusun elemen di Java sedangkan Comparator menyediakan kaedah membandingkan () untuk menyusun elemen di Java.
- Antaramuka setanding terdapat dalam pakej java.lang sedangkan antara muka komparator terdapat dalam pakej java.util.
- Membandingkan menyediakan urutan penyusun tunggal manakala Pembanding menyediakan urutan penyortiran berganda.
- Membandingkan mempengaruhi kelas asal sedangkan pembanding tidak mempengaruhi kelas asal.
Kaedah yang digunakan dalam perbandingan:
Berikut adalah kaedah penting yang digunakan dalam antara muka yang boleh dibandingkan:
Bandingkan untuk ():
Kaedah BandingkanTo () digunakan untuk melakukan penyortiran semula jadi pada rentetan. Makna penyortiran semula jadi adalah urutan urutan yang berlaku pada objek, misalnya, urutan numerik untuk menyusun bilangan bulat, urutan abjad untuk String, dll
Sintaks kaedah BandingkanTo () adalah seperti berikut:
int compareTo(T obj)
Dalam sintaks di atas, T menandakan jenis objek yang akan anda bandingkan.
Kaedah BandingkanTo () membandingkan objek dengan T obj.
Pengeluaran:
- Ia mengembalikan 0 jika nilainya sama.
- Sekiranya, objek mempunyai nilai yang lebih rendah, maka kaedah ini mengembalikan nilai negatif.
- Sekiranya objek mempunyai nilai yang lebih tinggi, ia mengembalikan nilai positif.
Kaedah BandingkanTo () Contoh:
Contoh program Java sebanding berikut menunjukkan perbandingan dua watak, "a" dan "b". Huruf "a" muncul sebelum "b" mengikut abjad.
Oleh itu, output adalah -1. Huruf "b" muncul selepas "a" mengikut abjad. Oleh itu output adalah 1. Aksara "a" dan "b" kedua-duanya setara. Oleh itu output 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"));}}
Pengeluaran
Compare To 'a' b is : -1Compare To 'b' a is : 1Compare To 'b' b is : 0
Kaedah yang digunakan dalam Perbandingan:
Berikut adalah kaedah penting yang digunakan dalam antara muka perbandingan:
Bandingkan ():
Bandingkan () membolehkan anda membuat pesanan objek. Untuk melakukan ini, anda harus membuat kelas yang menggunakan antara muka perbandingan. Selepas ini, anda perlu mengganti kaedah membandingkannya.
Kaedah sintaks perbandingan () adalah seperti berikut:
compare(Object obj1, Object obj2)
Dalam sintaks di atas, obj1 dan obj2 adalah dua objek yang harus anda bandingkan menggunakan kaedah membandingkan ().
Pengeluaran:
- Ia mengembalikan bilangan bulat negatif jika argumen pertama kurang daripada yang kedua.
- Mengembalikan sifar jika argumen pertama dan argumen kedua sama.
- Kaedah ini dapat mengembalikan bilangan bulat positif, sekiranya argumen pertama lebih besar daripada yang kedua.
Anda harus memastikan bahawa hubungan itu transitif. Contohnya, ((bandingkan (a, b)> 0) && (bandingkan (b, c)> 0)) yang menyiratkan membandingkan (a, c)> 0.
Bandingkan Kaedah Kaedah:
Dalam program di bawah contoh pembanding Java, terdapat 6 pemboleh ubah. "x", "y", "p", "q", "r", dan "s". Keluarannya adalah -1 sebagai nilai "x", 20 lebih kecil daripada nilai "y", 30. Keluarannya adalah 0 kerana 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));}}
Pengeluaran:
-101
Sama dengan ():
Equals () mengesahkan sama ada objek nombor sama dengan objek, yang diserahkan sebagai argumen atau tidak.
Sintaks kaedah sama () adalah seperti berikut:
boolean awam sama (Objek o)
Kaedah ini mengambil dua parameter 1) objek apa pun 2) nilai kembali. Ia kembali benar jika argumen yang dilalui tidak batal dan merupakan objek dari jenis yang serupa yang mempunyai nilai angka yang sama.
Contoh Kaedah Sama:
Dalam contoh di bawah ini, kami membandingkan empat pemboleh ubah antara satu sama lain. Tiga pemboleh ubah adalah jenis integer dan satu jenis pendek. Hasil pertama adalah salah kerana nilai p, iaitu 5, tidak sama dengan nilai q, iaitu 20.
Hasil kedua adalah benar kerana nilai pemboleh ubah p dan r adalah sama, iaitu 5. Terakhir, outputnya salah, kerana pemboleh ubah p dan s mempunyai nilai yang ditetapkan berbeza.
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));}}
Pengeluaran
falsetruefalse
Perbezaan antara Comparable vs Comparator di Java

Perbezaan antara Comparable vs Comparator di Java
Berikut adalah perbezaan utama antara Java Comparable vs Comparator:
Setanding | Pembanding |
Comparable menyediakan kaedah membandingkanTo () untuk menyusun elemen di Java. | Comparator menyediakan kaedah membandingkan () untuk menyusun elemen di Java. |
Antara muka yang setanding terdapat dalam pakej java.lang. | Antara muka perbandingan terdapat dalam pakej java.util. |
Logik penyortiran mestilah berada dalam kelas yang sama dengan objek yang akan anda urutkan. | Logik penyortiran harus berada dalam kelas yang terpisah untuk menulis penyortiran yang berbeza berdasarkan atribut objek yang berbeza. |
Kelas yang objeknya ingin disusun mesti melaksanakan antara muka yang setanding. | Kelas, yang objeknya ingin disusun, tidak perlu melaksanakan antara muka perbandingan. |
Ia menyediakan urutan penyusun tunggal. | Ia menyediakan pelbagai urutan penyusunan. |
Kaedah ini dapat menyusun data mengikut urutan penyusun semula jadi. | Kaedah ini menyusun data mengikut urutan penyusun yang disesuaikan. |
Ia mempengaruhi kelas asal. iaitu, kelas sebenar diubah. | Itu tidak mempengaruhi kelas asal, iaitu, kelas sebenar tidak diubah. |
Dilaksanakan secara kerap di API oleh: Kalendar, kelas Wrapper, Date, dan String. | Ia dilaksanakan untuk menyusun contoh kelas pihak ketiga. |
Semua kelas pembungkus dan kelas String menerapkan antara muka yang setanding. | Satu-satunya kelas Comparator yang dilaksanakan adalah Collator dan RuleBasedColator. |
Amalan Terbaik Semasa Menggunakan Pembanding dan Sebanding di Java
- Gunakan antara muka yang setanding apabila perbandingan adalah standard untuk kelas tertentu.
- Anda boleh menggunakan lambdas dengan pembanding.
- Banyak kelas teras yang terdapat di antara muka yang setanding.
- Anda boleh menggunakan TreeSet dan TreeMap atau semasa menyusun Set atau Peta.
- Kaedah membandingkanTo () berfungsi dengan pembanding dan juga sebanding.
- Gunakan antara muka perbandingan hanya apabila anda memerlukan lebih banyak kelenturan.
- Kaedah membandingkanTo () akan mengembalikan bilangan bulat positif jika objek pertama lebih besar daripada yang lain, negatif jika lebih rendah, dan sifar jika keduanya sama.