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ลพa compare() metoda za sortiranje elemenata Java.
  • Usporedivo suฤelje prisutno je u java.lang paket, dok je suฤelje Comparator prisutno u java.util paket.
  • 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.

Razlika izmeฤ‘u Comparable i Comparator
Razlika izmeฤ‘u Comparable i Comparator

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:

Razlika izmeฤ‘u Comparable i Comparator u Java
Razlika izmeฤ‘u Comparable i Comparator u Java

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.

Saลพmite ovu objavu uz: