Comparabil vs comparator: diferența dintre comparabil și comparator

Publicat: 2020-12-30

Cuprins

Comparabil și comparator: o prezentare generală

Comparabil și comparator sunt ambele interfețe în limbajul de programare Java pentru a determina comportamentul în care vor fi implementate clasele. În timp ce Comparabil este folosit pe obiecte care sunt ordonate în mod natural, interfața Comparator implementează sortarea luând în considerare atributele unui obiect. În plus, sortarea Comparator ia în considerare obiectele din două clase diferite, iar Comparable compară obiectele folosind referința „acest”.

Acum, că am stabilit principiul de bază pe care funcționează ambele interfețe, să ne uităm la diferențele dintre cele două.

Diferența dintre comparabil și comparator

Metoda de sortare

Comparabil

Folosește funcția compareTo() pentru sortare. Aceasta este singura metodă prezentă în interfața de sortare comparabilă.

compareTo(Object O) ia ca argument un obiect și îl compară cu altul de același tip. Dacă un obiect este un șir, îl puteți compara doar cu un alt obiect de același tip. Același lucru este și cazul unui obiect int și așa mai departe. compareTo() returnează o valoare întreagă negativă, pozitivă sau zero pe baza rezultatului sortării.

Comparator

Există două metode de sortare a elementelor în Comparator: compare() și equals().

compare(Object O1, Object O2) ia în considerare două argumente ca intrare și oferă rezultatul dorit. Returnează un număr întreg pentru a indica modul în care primul argument se compară cu al doilea.

  • Dacă O1 este mai mic decât O2, returnează un număr întreg negativ.
  • Dacă O1 este mai mare decât O2, va returna un număr întreg pozitiv.
  • Dacă O1 este egal cu O2, returnează 0.

equals(Object) ia în considerare un obiect ca intrare și îl compară cu comparatorul. Returnează True dacă Obiectul este egal cu Comparatorul. De asemenea, se asigură că ordinea nu se schimbă.

Pachet folosit

Comparabil

Există în pachetul java.lang din Java.

Comparator

Există în pachetul java.util din Java.

Comandă și clasă

Comparabil

  • Ia în considerare obiectele care urmează ordinea naturală, adică au tendința de a se sorta. De exemplu, ordinea alfabetică sau ordinea numerică în cazul numelor, prețului, salariului, numărului de rol, vârstă etc.
  • De asemenea, este important ca ambele obiecte să aparțină aceleiași clase.
  • Interfața comparabilă compară „această” referință cu obiectul specificat.
  • Sortarea folosind Comparabil afectează clasa reală.

Comparator

  • Această interfață este utilizată în primul rând pentru a sorta atributele obiectelor specificate. Nu trebuie să aibă o ordine naturală; poate fi personalizat.
  • Logica sortării trebuie să fie în clase separate pentru a compara atributele obiectelor celor două clase luate în considerare.
  • Clasa reală rămâne neafectată.

Secvențe și colecții

Comparabil

  • Acceptă numai secvențe de sortare unice. Acest lucru implică faptul că puteți lua în considerare doar un element sau un atribut al unei colecții, cum ar fi un număr de rolă, vârsta sau rangul.
  • Pentru sortarea unei colecții de obiecte, matrice sau listă, puteți utiliza Collection. sortare(Lista) sau Arrays. sortare(Lista). Aceasta va aduce obiectele în ordinea lor naturală .

Comparator

  • Acceptă mai multe secvențe de sortare. Acest lucru implică faptul că puteți lua în considerare mai multe elemente sau atribute ale unei colecții, cum ar fi un număr de rol, vârsta și rangul.
  • Puteți folosi un collection.sort(list, comparator) pentru a sorta o colecție.

Iată un rezumat al tuturor diferențelor dintre Comparabil și Comparator

Comparabil Comparator
Pachet
Java.lang Java.util
Metoda de sortare
compara cu() comparaţie()
Comanda
Ordinea naturală Comanda personalizata
Tip de obiect
Obiectele în comparație trebuie să fie de același tip Sunt luate în considerare obiecte de diferite clase
Afect asupra clasei
Clasa se modifică Nu afectează clasa
Secvență de sortare
Secvență de sortare unică Secvență de sortare multiplă

Înscrieți-vă la cursurile de dezvoltare software de la cele mai bune universități din lume. Câștigă programe Executive PG, programe avansate de certificat sau programe de master pentru a-ți accelera cariera.

Lucruri de reținut când utilizați comparabil și comparator în Java

  • Interfața comparabilă este cea pentru a alege dacă vindeți pentru a efectua o comparație standard pentru o anumită clasă.
  • Comparatorul permite utilizarea lambda.
  • Puteți folosi metoda compareTo() pentru a implementa atât Comparator, cât și Comparable.
  • Interfața de comparare este recomandată dacă doriți flexibilitate în sortare

Concluzie

În majoritatea scenariilor din viața reală, atunci când sortăm, avem de obicei în minte o varietate de parametri. De asemenea, deoarece utilizarea rezultatelor comparabile în sortarea implicită și nu poate fi schimbată dinamic, este mai puțin practic decât Comparator, care vă permite să personalizați și să alegeți dintre diferite metode de sortare pentru a se potrivi cerințelor dvs. Numai din acest motiv, Comparator găsește mai multe aplicații practice decât Comparable.

Citiți: Un proiect Java interesant de verificat

Dacă sunteți interesat să aflați mai multe despre Java, dezvoltarea full-stack, consultați programul Executive PG de la upGrad și IIIT-B în dezvoltarea software full-stack, care este conceput pentru profesioniști care lucrează și oferă peste 500 de ore de formare riguroasă, peste 9 proiecte, și misiuni, statutul de absolvenți IIIT-B, proiecte practice practice și asistență la locul de muncă cu firme de top.

Ce sunt interfețele în limbaje de programare?

Este ușor să înveți Java?

Java introduce o paradigmă de programare orientată pe obiecte, permițând chiar și celor mai neexperimentați dezvoltatori Java să gândească și să creeze programe ca un dezvoltator experimentat. Java provine din limbajele de programare C și C++, care sunt, de asemenea, utilizate pe scară largă astăzi. În timp ce Java are unele asemănări cu C și C++ în ceea ce privește funcționalitatea, a devenit un limbaj mult mai ușor de utilizat. Deoarece programarea orientată pe obiecte simplifică întreținerea și modificarea codului existent, chiar și programatorii începători pot începe să lucreze la proiecte corporative. Este mai puțin probabil ca dezvoltatorii noi să întâmpine erori de rulare neprevăzute, deoarece Java este verificat pentru erori înainte de execuție. Java îi obligă pe programatori să specifice corect toate elementele de cod, reducând șansele de greșeală pe măsură ce aplicațiile cresc.

De ce este necesară sortarea în Java?

Sortarea se referă la un set de tehnici de rearanjare a locurilor elementelor dintr-o matrice astfel încât acestea să fie toate în ordine crescătoare sau descrescătoare. Un algoritm de sortare decent trebuie să se asigure că elementele cu aceeași valoare rămân în matricea sortată în aceeași ordine. Sortarea este necesară pentru înțelegerea în profunzime a structurilor de date și a algoritmilor. Java ca limbaj de programare este excepțional de versatil și poate fi folosit pentru a implementa o serie de algoritmi de sortare. Majoritatea acestor algoritmi sunt destul de versatili și pot fi implementați atât într-o manieră recursivă, cât și iterativă.