Diferența dintre Comparabil și Comparator în Java

Autor: Laura McKinney
Data Creației: 1 Aprilie 2021
Data Actualizării: 17 Mai 2024
Anonim
Diferența dintre Comparabil și Comparator în Java - Tehnologie
Diferența dintre Comparabil și Comparator în Java - Tehnologie

Conţinut

Comparabil și Comparator ambele sunt interfețele generice din Java utilizate pentru a compara elementele de date ale obiectelor. Interfața Comparabilă este prezentă în pachetul java.lang, iar interfața Comparator este prezentă în pachetul java.util. Diferența de bază dintre interfețele Comparable și Comparator este că interfața Comparable oferă secvența de sortare unică, în timp ce, interfața Comparator oferă secvențe de sortare multiple. Există câteva alte diferențe între interfața Comparabilă și Comparator pe care o vom studia în Graficul de comparație.


  1. Diagramă de comparație
  2. Definiție
  3. Diferențele cheie
  4. Concluzie

Diagramă de comparație

Baza pentru comparațieComparabilcomparator
De bază Interfața Comparabilă permite numai o secvență de sortare unică.Interfața Comparator permite mai multe secvențe de sortare.
pachete Interfața comparabilă este prezentă în pachetul java.lang.Interfața Comparator este prezentă în pachetul java.util.
metode Interfața Comparabilă conține o singură metodă
public int compareTo (Obiect obiect);
Interfața Comparator conține două metode
public int compare (Obiect obj1, Obiect obj2)
boolean egal (obiect obiect)
Punerea în aplicareInterfața comparabilă este implementată de clasa ale cărei obiecte trebuie comparate.Interfața Comparator este implementată de o clasă sperate în locul clasei ale cărei obiecte trebuie comparate.
Comparaţie Metoda compareTo (Object obj) compară obiectul care este folosit pentru a invoca metoda cu obiectele specificate trec la metodă.Metoda compara (Obiect obj1, Obiect obj2) compară ambele obiecte specificate care sunt transmise metodei.
Listă / ArrayAtunci când trebuie comparată o listă a obiectului de tip Comparabil, clasa Collection oferă o metodă adică Collections.sort (List lst).Atunci când o listă de obiecte de tip Comparabil trebuie comparată, clasa Colecție oferă o metodă adică.
Collections.sort (Listă, Comparator).


Definiția Comparable

Comparabilă este o interfață care este disponibilă în pachetul java.lang. O clasă implementează interfața Comparator, pentru a sorta obiectul în ordine naturală. Obiectele sunt sortate în ordine naturală înseamnă că obiectele sunt comparate după valorile lor ASCII. Clasele care implementează interfața comparabilă sunt clasele Byte, Character, Double, Float, Long, Short, String și Integer. Chiar și clasa Date și Calander implementează și interfața Comparabilă.

Interfața comparabilă conține o singură metodă care este CompareTo (Obiect obiect). Această metodă compară obiectul folosit pentru invocarea metodei cu obiectul specificat în parametru. Sintaxa metodei este următoarea:

public int compareTo (Obiect obiect);

Întoarcerea metodei CompareTo (Object obj) 0, când ambele obiecte comparate cu metoda conțin aceeași valoare, se întoarce -ve valoare dacă obiectul invocator este mai mic decât atunci obiectul specificat și se întoarce + ve valoare dacă obiectul invocator are o valoare mai mare în comparație cu obiectul specificat. Clasa Collections oferă o metodă de sortare pentru sortarea elementelor listei. Elementele de listă (și tablou) de tip Comparabil pot fi sortate folosind metoda „Collections.sort (List lst)”.


Definiția Comparator

Comparator este o interfață care este disponibilă în pachetul java.util. Interfața Comparator nu este implementată pe clasa ale cărei obiecte trebuie comparate, în schimb o clasă separată implementează interfața Comparator, astfel încât logica de sortare este aplicată fiecărui element de date al obiectului dintr-o clasă diferită. Comparatorul conține două metode după cum urmează:

public int compare (Object obj1, Object obj2) și boolean egal (Object obj)

Metoda compare () de mai sus compară primul obiect obj1 cu cel de-al doilea obiect obj2. Returul metodei compare () 0 când ambele obiecte comparate cu metoda conțin aceeași valoare, se întoarce -ve valoarea dacă obiectul obj1 este mai mic decât atunci obiectul obj2 și se întoarce + ve valoare dacă obiectul obj1 are o valoare mai mare în comparație cu obiectul obj2. Metodele egal () verifică dacă obiectul specificat este egal cu obiectul invocat. Returul metodei egal () Adevărat dacă ambele obiecte comparate sunt egale, se va întoarce fals. Clasa Colecții oferă metoda de sortare a elementelor listei și tipului de comparator. Elementele de listă ale tipurilor de comparator sunt sortate în funcție de metoda Collections.sort (List, Comparator).

  1. Interfața comparabilă permite o secvență de sortare unică, ceea ce înseamnă că puteți compara doar un element de date al obiectului în metoda compareTo (), pe de altă parte Interfața Comparator permite secvențe de sortare multiple, ceea ce înseamnă că puteți compara mai multe elemente de date ale obiectului.
  2. Interfața comparabilă este implementată de clasa ale cărei obiecte trebuie comparate, deoarece logica de sortare este definită în cadrul aceleiași clase. Pe de altă parte, interfața Comparator nu este implementată de clasa ale cărei obiecte trebuie comparate, deoarece logica de sortare este definită în clasele separate în care fiecare clasă definește sortarea pe elementul de date unic al obiectului, iar aceste clase definitoare implementează interfața Comparator .
  3. Interfața comparabilă se află în interiorul pachetului java.lang, în timp ce, interfața Comparator se află în interiorul pachetului java.util.
  4. Interfața Comparabilă declară o singură metodă care este compareTo (Object obj), în timp ce, Interfața Comparator declară două metode care sunt: ​​compare (Obiect obj1, Obiect obj2) și egal (Obiect Obiect).
  5. Metoda compareTo (Obiect obj) din Comparabil compară metoda care invocă obiectul cu obiectul specificat trecut metodei, în timp ce, metoda Compare (Object obj1, Object obj2) a Comparator compară obiectele obj1 cu obj2 care sunt transmise metodei.
  6. Clasa Collections oferă o metodă de sortare „Collections.sort (List lst)” pentru a sorta obiectele de tipul Comparable. Clasa Collections oferă metoda de sortare Collections.sort (List, Comparator) pentru a sorta obiectele de tip Comparator.

Concluzie:

Dacă doriți să sortați obiectele în ordinea naturală, atunci puteți utiliza interfața comparabilă altfel doriți să sortați obiectele pe baza oricărui atribut, atunci se utilizează interfața Comparator.