Ce este comparabil în Java?
Comparabil în Java este un obiect pentru a se compara cu un alt obiect. Ajută la sortarea listei de obiecte personalizate. Interfața java.lang.Comparable ar trebui să fie implementată de o clasă pentru a compara instanțele sale. Matricea de obiecte care implementează o interfață comparabilă este sortată automat prin metodele Arrays.sort și Collections.sort.
În acest tutorial Comparator vs Comparable în Java, veți afla:
- Ce este comparabil în Java?
- Ce este Comparator în Java?
- Metoda utilizată în comparabil:
- Metoda utilizată în Comparator:
- Diferența dintre comparabil vs comparator în Java
- Cele mai bune practici în timpul utilizării comparatorului și comparabil în Java
Ce este Comparator în Java?
Comparatorul în Java este un obiect pentru compararea diferitelor obiecte din diferite clase. Interfața de comparare în Java este, de asemenea, utilizată pentru a aranja obiectele claselor definite de utilizator. Include două metode importante de interfață de comparare cunoscute sub numele de comparare (obiect obj1, obiect obj2) și egale (element obiect).
DIFERENȚE CHEIE:
- Comparable oferă metoda compareTo () pentru sortarea elementelor în Java, în timp ce Comparator oferă metoda compare () pentru sortarea elementelor în Java.
- Interfața comparabilă este prezentă în pachetul java.lang, în timp ce interfața Comparator este prezentă în pachetul java.util.
- Comparable oferă o singură secvență de sortare, în timp ce Comparator oferă mai multe secvențe de sortare.
- Comparabilul afectează clasa originală, în timp ce comparatorul nu afectează clasa originală.
Metoda utilizată în comparabil:
Următoarea este o metodă importantă utilizată în interfața comparabilă:
Compara cu():
Metoda CompareTo () este utilizată pentru a efectua sortarea naturală pe șir. Înțelesul sortării naturale este ordinea de sortare care se aplică obiectului, de exemplu, ordinea numerică pentru sortarea numerelor întregi, ordinea alfabetică pentru String etc.
Sintaxa metodei CompareTo () este următoarea:
int compareTo(T obj)
În sintaxa de mai sus, T înseamnă tipul de obiecte pe care urmează să le comparați.
Metoda CompareTo () compară obiectul cu T obj.
Ieșire:
- Întoarce 0 dacă valorile sunt egale.
- În cazul în care, dacă obiectul are o valoare mai mică, atunci această metodă returnează o valoare negativă.
- Dacă obiectul are o valoare mai mare, returnează o valoare pozitivă.
CompareTo () Exemplu de metodă:
Următorul exemplu de exemplu comparabil Java arată comparația a două caractere, „a” și „b”. Caracterul „a” apare înainte de „b” în ordine alfabetică.
Prin urmare, ieșirea este -1. Caracterul „b” vine după „a” alfabetic. Prin urmare, ieșirea este 1. Caracterul "a" și "b" sunt ambele echivalente. Prin urmare, ieșirea este 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"));}}
Ieșire
Compare To 'a' b is : -1Compare To 'b' a is : 1Compare To 'b' b is : 0
Metoda utilizată în Comparator:
Următoarele sunt metodele importante utilizate în interfața de comparare:
Comparaţie():
Compare () vă permite să comandați obiecte. Pentru a face acest lucru, trebuie să creați o clasă care implementează interfața de comparare. După aceasta, trebuie să înlocuiți metoda de comparare.
Sintaxa metodei compare () este următoarea:
compare(Object obj1, Object obj2)
În sintaxa de mai sus, obj1 și obj2 sunt două obiecte pe care trebuie să le comparați folosind metoda compare ().
Ieșire:
- Returnează un întreg negativ dacă primul argument este mai mic decât cel de-al doilea.
- Returnează zero dacă primul argument și al doilea argument sunt egale.
- Această metodă poate returna un număr întreg pozitiv, în cazul în care primul argument este mai mare decât al doilea.
Trebuie să vă asigurați că relația este tranzitivă. De exemplu, ((compare (a, b)> 0) && (compare (b, c)> 0)) ceea ce implică compararea (a, c)> 0.
Exemplu de metodă de comparare:
În programul de mai jos al exemplului de comparare Java, există 6 variabile. „x”, „y”, „p”, „q”, „r” și „s”. Ieșirea este -1 ca valoare „x”, 20 este mai mică decât valoarea „y”, 30. Ieșirea este 0 deoarece valoarea „p”, 40 este egală cu valoarea „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));}}
Ieșire:
-101
Egal ():
Equals () verifică dacă obiectul număr este egal cu obiectul, care este transmis sau nu ca argument.
Sintaxa metodei equals () este după cum urmează:
public boolean este egal (Obiectul o)
Această metodă ia doi parametri 1) orice obiect 2) returnează valoarea. Revine adevărat dacă argumentul trecut nu este nul și este un obiect de tip similar având aceeași valoare numerică.
Exemplu de metodă egală:
În exemplul de mai jos, comparăm cele patru variabile între ele. Trei variabile sunt de tip întreg și una de tip scurt. Primul rezultat este fals deoarece valoarea lui p, care este 5, nu este egală cu valoarea lui q, care este 20.
Al doilea rezultat este adevărat deoarece valoarea variabilelor p și r este aceeași, care este 5. În cele din urmă, ieșirea este falsă, deoarece variabilele p și s au valori atribuite diferite.
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));}}
Ieșire
falsetruefalse
Diferența dintre comparabil vs comparator în Java
Iată principalele diferențe dintre Java Comparable vs Comparator:
Comparabil | Comparator |
Comparable oferă metoda compareTo () pentru sortarea elementelor în Java. | Comparator oferă metoda compare () pentru sortarea elementelor în Java. |
Interfața comparabilă este prezentă în pachetul java.lang. | Interfața de comparare este prezentă în pachetul java.util. |
Logica sortării trebuie să se afle în aceeași clasă al cărei obiect urmează să-l sortați. | Logica sortării trebuie să se afle într-o clasă separată pentru a scrie o sortare diferită pe baza diferitelor atribute ale obiectelor. |
Clasa ale cărei obiecte doriți să le sortați trebuie să implementeze o interfață comparabilă. | Clasa, ale cărei obiecte doriți să le sortați, nu trebuie să implementeze o interfață de comparare. |
Oferă secvențe de sortare unice. | Oferă mai multe secvențe de sortare. |
Această metodă poate sorta datele în funcție de ordinea naturală de sortare. | Această metodă sortează datele în funcție de ordinea de sortare personalizată. |
Afectează clasa originală. adică, clasa reală este modificată. | Nu afectează clasa originală, adică clasa reală nu este modificată. |
Implementat frecvent în API de: Calendar, clase Wrapper, Data și Șir. | Este implementat pentru a sorta instanțele de clase terțe. |
Toate clasele de împachetare și clasa String implementează o interfață comparabilă. | Singurele clase implementate de Comparator sunt Collator și RuleBasedColator. |
Cele mai bune practici în timpul utilizării comparatorului și comparabil în Java
- Utilizați o interfață comparabilă atunci când comparația este standard pentru clasa specifică.
- Puteți utiliza lambdas cu un comparator.
- Multe clase de bază disponibile în implementează o interfață comparabilă.
- Este posibil să utilizați TreeSet și TreeMap sau în timp ce sortați Set sau Map.
- Metoda compareTo () funcționează atât cu comparator, cât și comparabil.
- Utilizați interfața de comparare numai atunci când
- Metoda compareTo () va returna un număr întreg pozitiv dacă primul obiect este mai mare decât celălalt, negativ dacă este mai mic și zero dacă ambele sunt aceleași.