Sebanding vs Pembanding di Java

Perbedaan Utama antara Sebanding dan Pembanding di Java

  • Sebanding di Java adalah objek untuk membandingkan dirinya dengan objek lain, sedangkan Comparator adalah objek untuk membandingkan objek berbeda dari kelas yang berbeda.
  • Sebanding menyediakan compareTo() metode untuk mengurutkan elemen Java, sedangkan Comparator menyediakan compare() metode untuk mengurutkan elemen Java.
  • Antarmuka yang sebanding hadir di java.lang paket, sedangkan antarmuka Komparator ada di dalamnya java.util paket.
  • Comparable menyediakan urutan pengurutan tunggal, sedangkan Comparator menyediakan beberapa urutan pengurutan.
  • Comparable mempengaruhi kelas asli, sedangkan Comparator tidak mempengaruhi kelas asli.

Perbedaan antara Sebanding dan Pembanding
Perbedaan antara Sebanding dan Pembanding

Di sini, saya telah menganalisis perbedaan antara pembanding dan Pembanding dan akan mengevaluasi kelebihan dan kekurangannya secara komprehensif.

Apa yang sebanding di Java?

Sebanding in Java adalah objek yang membandingkan dirinya dengan objek lain. Ini membantu mengurutkan daftar objek kustom. Java.lang.Antarmuka yang sebanding harus diimplementasikan oleh suatu kelas untuk membandingkan instance-nya. Array objek yang mengimplementasikan antarmuka serupa diurutkan secara otomatis berdasarkan Arrays.sort dan Collections.sort metode.

Metode yang digunakan dalam Comparable

Saya ingin menyoroti metode penting yang sering saya gunakan di antarmuka Sebanding:

Dibandingkan dengan():

Metode CompareTo() digunakan untuk melakukan pengurutan alami pada string. Arti dari pengurutan alami adalah urutan pengurutan yang berlaku pada objek, misalnya, urutan numerik untuk pengurutan bilangan bulat, urutan alfabet untuk String, dst.

Sintaks dari CompareTo() metode adalah sebagai berikut:

int compareTo(T obj)

Dalam sintaks di atas, T menandakan tipe objek yang akan Anda bandingkan.

CompareTo() metode membandingkan objek dengan T obj.

Keluaran:

  • Ia mengembalikan 0 jika nilainya sama.
  • Jika objek memiliki nilai lebih rendah, maka metode ini mengembalikan nilai negatif.
  • Jika objek mempunyai nilai yang lebih tinggi, ia mengembalikan nilai positif.

Contoh Sebanding di Java

Program berikut ini Java Contoh pembanding menunjukkan perbandingan dua karakter, “a” dan “b”. Karakter “a” muncul sebelum “b” berdasarkan abjad.

Oleh karena itu, outputnya adalah -1. Karakter “b” muncul setelah “a” berdasarkan abjad. Oleh karena itu, keluarannya adalah 1. Karakter “a” dan “b” keduanya setara. Oleh karena itu, outputnya 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 : -1
Compare To 'b' a is : 1
Compare To 'b' b is : 0

Apa yang dimaksud dengan pembanding Java?

Sebuah pembanding in Java adalah objek untuk membandingkan objek berbeda dari kelas berbeda. Antarmuka komparator di Java juga digunakan untuk mengatur objek kelas yang ditentukan pengguna. Ini mencakup dua metode antarmuka pembanding penting yang dikenal sebagai perbandingan (Objek obj1, Objek obj2) dan sama dengan (Elemen objek).

Metode yang digunakan dalam Komparator

Dalam praktik saya, saya sering mengandalkan metode kritis antarmuka pembanding berikut ini:

Membandingkan():

Compare() memungkinkan Anda memesan objek. Untuk melakukan ini, Anda harus membuat kelas yang mengimplementasikan antarmuka komparator. Setelah ini, Anda perlu mengganti metode perbandingannya.

Sintaks dari compare() metode 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(). compare() Metode.

Keluaran:

  • Ia mengembalikan bilangan bulat negatif jika argumen pertama lebih kecil dari argumen kedua.
  • Mengembalikan nol jika argumen pertama dan argumen kedua sama.
  • Metode ini dapat mengembalikan bilangan bulat positif jika argumen pertama lebih besar dari argumen kedua.

Anda harus memastikan bahwa hubungannya bersifat transitif. Misalnya, ((bandingkan(a, b)>0) && (bandingkan(b, c)>0)) yang berarti membandingkan(a, c)>0.

Contoh Sebanding di Java

Di bawah ini Java contoh pembanding ada 6 variabel. “x”, “y”, “p”, “q”, “r”, dan “s”. Outputnya -1 karena nilai “x”, 20 lebih kecil dari nilai “y”, 30. Outputnya 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 zero 
        System.out.println(Integer.compare(x, y)); 
        int p = 40; 
        int q = 40; 
        // as 30 equals 30, 
        // Output will be zero 
        System.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 zero 
        System.out.println(Integer.compare(r, s)); 
    } 
}

Keluaran:

-1
0
1

Sama dengan():

Equals() memverifikasi apakah objek angka sama dengan objek yang dilewatkan sebagai argumen, atau tidak.

Sintaks dari equals() metode adalah sebagai berikut:

public boolean equals(Object o)

Metode ini mengambil dua parameter: 1) objek apa pun, dan 2) nilai kembalian. Ia mengembalikan nilai benar jika argumen yang diteruskan bukan nol dan merupakan objek bertipe serupa yang memiliki nilai numerik yang sama.

Contoh Metode Sama:

Pada contoh di bawah ini, saya akan membandingkan keempat variabel satu sama lain. Tiga variabel bertipe integer, dan satu variabel bertipe short. 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 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

false
true
false

Perbedaan antara Comparable dan Comparator di Java

Saya sering melihat kebingungan di antara keduanya Java Sebanding dan Pembanding; inilah perbedaan utamanya:

Perbedaan antara Sebanding dan Pembanding di Java
Perbedaan antara Sebanding dan Pembanding di Java

Dasar Perbandingan Sebanding Pembanding
metode Persediaan yang sebanding compareTo() metode untuk mengurutkan elemen Java. Pembanding menyediakan compare() metode untuk mengurutkan elemen Java.
Paket Antarmuka yang sebanding hadir di java.lang paket. Antarmuka komparator hadir di java.util paket.
Logika Penyortiran Logika pengurutan harus berada pada kelas yang sama dengan objek yang akan diurutkan. Logika pengurutan harus berada di kelas yang terpisah untuk menulis pengurutan yang berbeda berdasarkan atribut objek yang berbeda.
Objek Kelas Kelas yang objeknya ingin Anda urutkan harus mengimplementasikan antarmuka Comparable. Kelas yang objeknya ingin Anda urutkan tidak perlu mengimplementasikan antarmuka pembanding.
Urutan Penyortiran Ini menyediakan urutan penyortiran tunggal. Ini menyediakan beberapa urutan penyortiran.
Urutan Penyortiran Metode ini dapat mengurutkan data sesuai dengan urutan pengurutan alaminya. Metode ini mengurutkan data berdasarkan urutan penyortiran yang disesuaikan.
Kelas Ini mempengaruhi kelas aslinya. yaitu, kelas sebenarnya diubah. Itu tidak mempengaruhi kelas asli, yaitu kelas sebenarnya tidak diubah.
penggunaan Sering diimplementasikan di API berdasarkan Kalender, kelas Wrapper, Tanggal, dan
Tali.
Ini diterapkan untuk mengurutkan instance kelas pihak ketiga.
Implementasi VE Semua kelas wrapper dan kelas string mengimplementasikan antarmuka yang sebanding. Satu-satunya kelas Comparator yang diimplementasikan adalah Collator dan RuleBasedColator.

Praktik Terbaik Saat Menggunakan Pembanding dan Pembanding di Java

  • Gunakan antarmuka yang sebanding ketika perbandingannya adalah standar untuk kelas tertentu.
  • Anda dapat menggunakan lambda dengan pembanding.
  • Banyak kelas inti yang tersedia menerapkan antarmuka yang sebanding.
  • Dimungkinkan untuk menggunakan TreeSet dan TreeMap saat mengurutkan Set atau Map.
  • compareTo() metode bekerja dengan pembanding dan juga pembanding.
  • Gunakan antarmuka pembanding hanya ketika Anda < memerlukan lebih banyak fleksibilitas.
  • compareTo() Metode ini akan mengembalikan bilangan bulat positif jika objek pertama lebih besar dari objek lainnya, negatif jika objek pertama lebih rendah, dan nol jika keduanya sama.

Bagaimana Memilih Antara Yang Sebanding dan Pembanding

Secara meyakinkan, pengalaman praktis saya menunjukkan bahwa memanfaatkan Comparable dan Comparator di Java secara signifikan meningkatkan kontrol yang kita miliki atas penyortiran data, meningkatkan kinerja dan fungsionalitas.