Usporedivo u usporedbi Java
Kljuฤna razlika izmeฤu Comparable i Comparator in Java
- Usporedivo u Java je objekt za usporedbu s drugim objektom, dok je Comparator objekt za usporedbu razliฤitih objekata razliฤitih klasa.
- Comparable pruลพa
compareTo()metoda za sortiranje elemenata Java, dok Comparator pruลพacompare()metoda za sortiranje elemenata Java. - Usporedivo suฤelje prisutno je u
java.langpaket, dok je suฤelje Comparator prisutno ujava.utilpaket. - Comparable pruลพa jednu sekvencu sortiranja, dok Comparator pruลพa viลกe sekvenci sortiranja.
- Comparable utjeฤe na izvornu klasu, dok Comparator ne utjeฤe na izvornu klasu.

Ovdje sam analizirao razliku izmeฤu Comparable i Comparator i sveobuhvatno ฤu procijeniti njihove prednosti i nedostatke.
ล to je usporedivo u Java?
Usporedive in Java je objekt koji se usporeฤuje s drugim objektom. Pomaลพe sortirati popis prilagoฤenih objekata. The Java.lang.Uporedivo suฤelje treba implementirati klasa kako bi se usporedile njegove instance. Niz objekata koji implementiraju usporedivo suฤelje automatski se sortira prema Arrays.sort i Collections.sort metode.
Metoda koriลกtena u Comparable
ลฝelio bih istaknuti vaลพnu metodu koju ฤesto koristim u suฤelju Comparable:
Usporedi s():
Metoda CompareTo() koristi se za izvoฤenje prirodnog sortiranja niza. Znaฤenje prirodnog sortiranja je redoslijed sortiranja koji se primjenjuje na objekt, npr. numeriฤki redoslijed za sortiranje cijelih brojeva, abecedni red za niz, itd.
Sintaksa CompareTo() metoda je sljedeฤa:
int compareTo(T obj)
U gornjoj sintaksi, T oznaฤava vrstu objekata koje ฤete usporeฤivati.
CompareTo() metoda usporeฤuje objekt s T obj.
Izlaz:
- Vraฤa 0 ako su vrijednosti jednake.
- Ako objekt ima niลพu vrijednost, tada ova metoda vraฤa negativnu vrijednost.
- Ako objekt ima veฤu vrijednost, vraฤa pozitivnu vrijednost.
Primjer usporedivog u Java
Sljedeฤi program od Java usporedivi primjer prikazuje usporedbu dva znaka, โaโ i โbโ. Znak "a" dolazi ispred "b" po abecedi.
Stoga je izlaz -1. Znak "b" dolazi nakon "a" po abecedi. Dakle, izlaz je 1. Oba znaka "a" i "b" su ekvivalentna. Dakle, izlaz je 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"));
}
}
Izlaz
Compare To 'a' b is : -1 Compare To 'b' a is : 1 Compare To 'b' b is : 0
ล to je komparator u Java?
Usporednik in Java je objekt za usporedbu razliฤitih objekata razliฤitih klasa. Suฤelje komparatora u Java takoฤer se koristi za rasporeฤivanje objekata korisniฤki definiranih klasa. Ukljuฤuje dvije vaลพne metode suฤelja komparatora poznate kao usporedba (Object obj1, Object obj2) i jednako (Object element).
Metoda koriลกtena u Comparatoru
U svojoj praksi ฤesto se oslanjam na sljedeฤe kritiฤne metode suฤelja komparatora:
Usporedi():
Compare() omoguฤuje naruฤivanje objekata. Da biste to uฤinili, morate stvoriti klasu koja implementira suฤelje komparatora. Nakon toga morate nadjaฤati njegovu metodu usporedbe.
Sintaksa od compare() metoda je sljedeฤa:
compare(Object obj1, Object obj2)
U gornjoj sintaksi, obj1 i obj2 su dva objekta koja morate usporediti pomoฤu metode compare(). compare() metoda.
Izlaz:
- Vraฤa negativan cijeli 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 implicira usporedi (a, c)>0.
Primjer usporedivog u Java
U nastavku Java primjer komparatora, ima ih 6 varijable. โxโ, โyโ, โpโ, โqโ, โrโ i โsโ. Izlaz je -1 kao vrijednost "x", 20 je manji od vrijednosti "y", 30. Izlaz je 0 jer je vrijednost "p", 40 jednaka vrijednosti "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 zero
System.out.println(Integer.compare(x, y));
int p = 40;
int q = 40;
// as 30 equals 30,
// Output will be zero
System.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 zero
System.out.println(Integer.compare(r, s));
}
}
Izlaz:
-1 0 1
Jednako():
Equals() provjerava je li objekt broj jednak objektu koji se prosljeฤuje kao argument ili ne.
Sintaksa od equals() metoda je sljedeฤa:
public boolean equals(Object o)
Ova metoda uzima dva parametra: 1) bilo koji objekt i 2) povratnu vrijednost. Vraฤa true ako proslijeฤeni argument nije null i objekt je sliฤnog tipa koji ima istu numeriฤku vrijednost.
Primjer metode Equals:
U donjem primjeru, usporeฤivat ฤu ฤetiri varijable jednu s drugom. Tri varijable su tipa integer, a jedna je tipa short. Prvi rezultat je laลพan jer vrijednost p, koja je 5, nije jednaka vrijednosti q, koja je 20.
Drugi rezultat je istinit jer je vrijednost varijabli p i r ista, a to je 5. Na kraju, izlaz je netoฤan, jer varijable p i s imaju razliฤite dodijeljene vrijednosti.
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));
}
}
Izlaz
false true false
Razlike izmeฤu Comparable i Comparator u Java
ฤesto vidim zabunu izmeฤu Java Usporedni i Usporedni; evo glavne razlike:

| Osnova usporedbe | Usporedive | Usporednik |
|---|---|---|
| naฤin | Usporedivi pruลพa compareTo() metoda za sortiranje elemenata Java. |
Usporednik pruลพa compare() metoda za sortiranje elemenata Java. |
| Paket | Usporedivo suฤelje prisutno je u java.lang paket. |
Prisutno je suฤelje za usporedbu java.util paket. |
| Logika sortiranja | Logika sortiranja mora biti u istoj klasi kao i objekt koji ฤete sortirati. | Logika sortiranja trebala bi biti u zasebnim klasama za pisanje razliฤitih sortiranja na temelju razliฤitih atributa objekata. |
| Objekt klase | Klasa ฤije objekte ลพelite sortirati mora implementirati suฤelje Comparable. | Klasa ฤije objekte ลพelite sortirati ne mora implementirati suฤelje za usporedbu. |
| Razvrstavanje sekvenci | Omoguฤuje pojedinaฤne nizove sortiranja. | Omoguฤuje viลกe sekvenci sortiranja. |
| Redoslijed sortiranja | Ova metoda moลพe sortirati podatke prema prirodnom redoslijedu sortiranja. | Ova metoda sortira podatke prema prilagoฤenom redoslijedu sortiranja. |
| Klasa | Utjeฤe na izvornu klasu. tj. mijenja se stvarna klasa. | Ne utjeฤe na izvornu klasu, tj. stvarna klasa se ne mijenja. |
| Upotreba | ฤesto se implementira u API-ju pomoฤu kalendara, klasa omotaฤa, datuma i Niz. |
Implementiran je za sortiranje instanci klasa treฤih strana. |
| Implementirati | Sve klase omotaฤa i klase nizova implementiraju usporediva suฤelja. | Jedine implementirane klase Comparator-a su Collator i RuleBasedColator. |
Najbolji primjeri iz prakse pri koriลกtenju Comparator i Comparable in Java
- Koristite usporedivo suฤelje kada je usporedba standardna za odreฤenu klasu.
- Moลพete koristiti lambde s komparatorom.
- Mnoge dostupne osnovne klase implementiraju usporedivo suฤelje.
- Moguฤe je koristiti TreeSet i TreeMap tijekom sortiranja Seta ili Mape.
- The
compareTo()metoda radi s komparatorom kao i s komparatorom. - Koristite suฤelje za usporedbu samo kada < trebate viลกe fleksibilnosti.
- The
compareTo()metoda ฤe vratiti pozitivan cijeli broj ako je prvi objekt veฤi od drugog, negativan ako je manji i nulu ako su oba ista.
Kako odabrati izmeฤu usporedivog i usporednog
Konaฤno, moje praktiฤno iskustvo sugerira da koriลกtenje Comparable i Comparator u Java znaฤajno podiลพe kontrolu koju imamo nad sortiranjem podataka, poboljลกavajuฤi performanse i funkcionalnost.
