Razlika između Usporedivog i Usporednog u Javi

Što je usporedivo u Javi?

Usporedivo u Javi je objekt za usporedbu s drugim objektom. Pomaže u sortiranju popisa prilagođenih objekata. Java.lang.Comparable sučelje treba implementirati klasa kako bi se usporedile njegove instance. Niz objekata koji implementiraju usporedivo sučelje automatski se sortira prema metodama Arrays.sort i Collections.sort.

U ovom tutorialu Comparator vs Comparable in Java naučit ćete:

Što je Comparator u Javi?

Komparator u Javi je objekt za usporedbu različitih objekata različitih klasa. Sučelje za usporedbu u Javi također se koristi za raspoređivanje objekata klasa definiranih od strane korisnika. Uključuje dvije važne metode sučelja za usporedbu poznate kao usporedba (Objekt obj1, Objekt obj2) i jednaka (Objektni element).

KLJUČNE RAZLIKE:

  • Comparable pruža compareTo () metodu za razvrstavanje elemenata u Javi dok Comparator nudi compare () metodu za sortiranje elemenata u Javi.
  • Usporedivo sučelje prisutno je u paketu java.lang dok je sučelje Comparator prisutno u paketu java.util.
  • Comparable nudi jedan redoslijed sortiranja, dok Comparator nudi višestruke redoslijede sortiranja.
  • Usporedivo utječe na izvornu klasu, dok usporedno ne utječe na izvornu klasu.

Metoda koja se koristi u Usporedivo:

Slijedi važna metoda koja se koristi u Usporednom sučelju:

Usporedi ():

CompareTo () metoda koristi se za prirodno sortiranje po nizu. Značenje prirodnog sortiranja je redoslijed sortiranja koji se primjenjuje na objekt, npr. Numerički redoslijed za razvrstavanje cijelih brojeva, abecedni red za niz, itd.

Sintaksa metode CompareTo () je sljedeća: | _+_ |

U gornjoj sintaksi, T označava vrstu objekata koje ćete usporediti.

Metoda CompareTo () uspoređuje objekt s T obj.

Izlaz:

  • Vraća 0 ako su vrijednosti jednake.
  • U slučaju da objekt ima manju vrijednost, ova metoda vraća negativnu vrijednost.
  • Ako objekt ima veću vrijednost, vraća pozitivnu vrijednost.

Primjer metode CompareTo ():

Sljedeći program s Javom usporedivim primjerom prikazuje usporedbu dva znaka, 'a' i 'b'. Znak 'a' dolazi ispred 'b' po abecedi.

Stoga je izlaz -1. Znak 'b' dolazi iza 'a' po abecedi. Dakle izlaz je 1. Znakovi 'a' i 'b' su ekvivalentni. Dakle izlaz je 0. | _+_ |

Izlaz

int compareTo(T obj)

Metoda korištena u komparatoru:

Slijede važne metode koje se koriste u usporednom sučelju:

Usporedi ():

Compare () omogućuje vam naručivanje objekata. Da biste to učinili, morate stvoriti klasu koja implementira usporedno sučelje. Nakon toga morate nadjačati njegovu metodu uspoređivanja.

Sintaksa metode compare () je sljedeća: | _+_ |

U gornjoj sintaksi, obj1 i obj2 su dva objekta koja morate usporediti pomoću compare () metode.

Izlaz:

  • Vraća cijeli negativni broj ako je prvi argument manji od drugog.
  • Vraća nulu ako su prvi i drugi argument jednaki.
  • Ova metoda može vratiti pozitivan cijeli broj, u slučaju da je prvi argument veći od drugog.

Morate osigurati da je odnos tranzitivan. Na primjer, ((usporedi (a, b)> 0) && (usporedi (b, c)> 0)) što podrazumijeva usporedbu (a, c)> 0.

Primjer metode usporedbe:

U donjem programu primjera usporedbe Java postoji 6 varijabli. 'x', 'y', 'p', 'q', 'r' i 's'. Izlaz je -1 kao vrijednost 'x', 20 je manja od vrijednosti 'y', 30. Izlaz je 0 jer je vrijednost 'p', 40 jednaka vrijednosti 'q', 40 . | _+_ |

Izlaz:

 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')); } } 

Jednako ():

Equals () provjerava je li objekt broja jednak objektu, koji se prenosi kao argument ili ne.

Sintaksa metode equals () je sljedeća:

javno logičko jednako (Objekt o)

Ova metoda uzima dva parametra 1) bilo koji objekt 2) povratnu vrijednost. Vraća true ako proslijeđeni argument nije null i ako je objekt sličnog tipa koji ima istu numeričku vrijednost.

Primjer metode jednak:

U donjem primjeru uspoređujemo četiri varijable jedna s drugom. Tri varijable su tipa integer, a jedna tipa short. Prvi rezultat je netočan jer vrijednost p, koja je 5, nije jednaka vrijednosti q, koja je 20.

Drugi rezultat je istinit jer je vrijednost varijable p i r ista, što je 5. Na kraju, izlaz je lažan, jer varijable p i s imaju različite dodijeljene vrijednosti. | _+_ |

Izlaz

 Compare To 'a' b is : -1 Compare To 'b' a is : 1 Compare To 'b' b is : 0 

Razlika između Comparable vs Comparator u Javi

Razlika između Comparable vs Comparator u Javi

Evo glavnih razlika između Java Comparable -a i Comparator -a:

Usporedivo Usporednik
Comparable nudi compareTo () metodu za sortiranje elemenata u Javi.Komparator nudi metodu compare () za sortiranje elemenata u Javi.
Usporedivo sučelje prisutno je u paketu java.lang.Sučelje komparatora prisutno je u paketu java.util.
Logika razvrstavanja mora biti u istoj klasi čiji ćete objekt sortirati.Logika razvrstavanja trebala bi biti u zasebnoj klasi za pisanje različitih sortiranja na temelju različitih atributa objekata.
Klasa čije objekte želite sortirati mora implementirati usporedivo sučelje.Class, čije objekte želite sortirati, ne mora implementirati sučelje za usporedbu.
Pruža pojedinačne redoslijede sortiranja.Omogućuje više nizova sortiranja.
Ova metoda može sortirati podatke prema prirodnom redoslijedu sortiranja.Ova metoda sortira podatke prema prilagođenom redoslijedu sortiranja.
Utječe na izvornu klasu. tj. mijenja se stvarna klasa.Ne utječe na izvornu klasu, tj. Stvarna klasa se ne mijenja.
Često se implementira u API prema: Kalendar, Klase omotača, Datum i niz.Provodi se za sortiranje instanci klasa trećih strana.
Sve klase omotača i klasa String implementiraju usporedivo sučelje.Jedine implementirane klase komparatora su Collator i RuleBasedColator.

Najbolje prakse tijekom korištenja komparatora i usporedbe u Javi

  • Uporedite sučelje ako je usporedba standardna za određenu klasu.
  • Možete upotrijebiti lambde s usporednikom.
  • Mnoge osnovne klase dostupne u implementiraju usporedivo sučelje.
  • Moguće je koristiti TreeSet i TreeMap ili dok sortirate Set ili Map.
  • Metoda compareTo () radi s komparatorom kao i s usporedivim.
  • Sučelje za usporedbu koristite samo kada
  • Metoda compareTo () vratit će pozitivan cijeli broj ako je prvi objekt veći od drugog, negativan ako je niži i nulu ako su oba ista.