Preporučeno, 2024

Izbor Urednika

Razlika između usporedivih i komparatora u Javi

Usporedivi i usporedni oboje su generička sučelja u Javi koja se koriste za usporedbu elemenata podataka objekata. Sučelje Comparable je prisutno u java.lang paketu, a sučelje Comparator je prisutno u java.util paketu. Osnovna razlika između sučelja Comparable i Comparator je u tome što Comparable sučelje osigurava jedan redoslijed sortiranja, dok sučelje Comparator osigurava višestruke sekvence sortiranja. Postoje neke druge razlike između sučelja usporedivog i komparatora koje ćemo proučavati u tablici za usporedbu.

Tablica usporedbe

Osnova za usporedbuusporedivokomparator
Osnovni, temeljniUsporedivo sučelje omogućuje samo jedan redoslijed sortiranja.Sučelje Comparator omogućuje višestruke nizove sortiranja.
paketiUsporedivo sučelje je prisutno u java.lang paketu.Sučelje Comparator je prisutno u paketu java.util.
metodeUsporedivo sučelje sadrži samo jednu metodu
public int compareTo (Object);
Sučelje Comparator sadrži dvije metode
javni int сравнение (Objekt obj1, Objekt obj2)
boolean jednako (Object obj)
izvršenjeUsporedivo sučelje provodi klasa čiji se objekti uspoređuju.Sučelje za usporedbu implementira razred sperata umjesto klase čiji se objekti uspoređuju.
usporedbaMetoda compareTo (Object obj) uspoređuje objekt koji se koristi za pozivanje metode s navedenim prelazima objekta na metodu.Metoda usporedbe (Object obj1, Object obj2) uspoređuje oba navedena objekta koja se prosljeđuju metodi.
Lista / ArrayKada popis objekata Comparable tipa treba uspoređivati, klasa Collection sadrži metodu tj. Collections.sort (Popis lst).Kada popis objekata Comparable tipa treba usporediti, klasa Collection daje metodu tj
Zbirke (popis, usporednik).

Definicija usporedivosti

Usporedivo je sučelje koje je dostupno u java.lang paketu. Klasa implementira sučelje Comparator, kako bi razvrstala svoj objekt u prirodnom poretku. Objekti se sortiraju prirodnim redoslijedom, što znači da se objekti uspoređuju prema ASCII vrijednostima. Klase koje implementiraju Comparable sučelje su Byte, Character, Double, Float, Long, Short, String i Integer klase. Čak i klasa Date i Calander također implementira Comparable sučelje.

Usporedivo sučelje sadrži samo jednu metodu koja je CompareTo (Object obj). Ova metoda uspoređuje objekt koji se koristi za pozivanje metode s objektom navedenim u parametru. Sintaksa metode je sljedeća:

 public int compareTo (Object); 

Metoda CompareTo (Object obj) vraća 0, kada oba objekta u odnosu na metodu sadrže istu vrijednost, vraća -ve vrijednost ako je pozivni objekt manji od navedenog objekta i vraća + ve vrijednost ako pozivni objekt ima veću vrijednost Klasa daje metodu sortiranja za sortiranje elemenata popisa. Elementi popisa (i niza) tipa Comparable mogu se sortirati pomoću metode “Collections.sort (List lst)”.

Definicija komparatora

Comparator je sučelje koje je dostupno u java.util paketu. Komparator sučelja nije implementiran na klasi čiji se objekti trebaju uspoređivati, nego zasebna klasa implementira Comparator sučelje tako da se logika sortiranja primjenjuje na svaki podatkovni element objekta u drugoj klasi. Usporednik sadrži dvije metode kako slijedi:

 public int compare (Objekt obj1, Objekt obj2) i boolean jednak (Object obj) 

Metoda compare () gore uspoređuje prvi objekt obj1 s drugim objektom obj2. Metoda compare () vraća 0 kada oba objekta u odnosu na metodu sadrže istu vrijednost, vraća -ve vrijednost ako je objekt obj1 manji od objekta obj2 i vraća + ve vrijednost ako objekt obj1 ima veću vrijednost u usporedbi do objekta obj2. Metode equals () provjeravaju je li navedeni objekt jednak pozivnom objektu. Metoda equals () vraća true ako su oba uspoređena objekta jednaka, a vraća false . Klasa Zbirke pruža metodu za sortiranje elemenata popisa i komparatora. Elementi popisa komparatora sortirani su metodom Collections.sort (List, Comparator).

Ključne razlike između usporedivih i komparatora

  1. Usporedivo sučelje omogućuje jedan redoslijed sortiranja što znači da možete usporediti samo jedan podatkovni element objekta u compareTo () metodi, s druge strane Comparator sučelje omogućuje višestruke sortirajuće sekvence što znači da možete usporediti više podatkovnih elemenata objekta.
  2. Usporedivo sučelje implementira klasa čiji se objekti trebaju uspoređivati ​​jer je logika sortiranja definirana unutar iste klase. S druge strane, sučelje Comparator ne implementira klasa čiji se objekti trebaju uspoređivati ​​jer je logika razvrstavanja definirana u odvojenim klasama gdje svaka klasa definira sortiranje na jednom podatkovnom elementu objekta i te definirajuće klase implementiraju sučelje Comparator.,
  3. Usporedivo sučelje nalazi se unutar java.lang paketa dok je Comparator sučelje unutar java.util paketa.
  4. Usporedivo sučelje objavljuje samo jednu metodu koja je compareTo (Object obj) dok, Comparator sučelje proglašava dvije metode koje su, usporedite (Object obj1, Object obj2) i jednake (Object obj).
  5. Metoda compareTo (Object obj) u Comparable uspoređuje metodu prizivanja objekta s navedenim objektom koji je proslijeđen metodi, dok metoda Comparator (Object obj1, Object obj2) uspoređuje objekte obj1 s obj2 koji se prosljeđuju metodi.
  6. Klasa Klasa pruža metodu sortiranja "Zbirke.sort (Popis lst)" da sortira objekte tipa Usporedivo. Klasa klase osigurava metodu sortiranja Collections.sort (List, Comparator) za sortiranje objekata tipa Comparator.

Zaključak:

Ako želite sortirati objekte u prirodnom poretku, tada možete koristiti usporedivo sučelje koje želite razvrstati na temelju bilo kojeg atributa, a zatim koristiti Comparator sučelje.

Top